From b1c67cc40dbc5abc2fe0ea4061add330e124515c Mon Sep 17 00:00:00 2001 From: Toon Verwerft Date: Sun, 12 Nov 2023 14:21:28 +0100 Subject: [PATCH 1/4] PHP83 Support --- .github/workflows/analyzers.yaml | 4 ++-- .github/workflows/autoloader.yaml | 4 ++-- .github/workflows/code-style.yaml | 8 ++++++-- .github/workflows/stress.yaml | 4 ++-- .github/workflows/tests.yaml | 4 ++-- composer.json | 2 +- 6 files changed, 15 insertions(+), 11 deletions(-) diff --git a/.github/workflows/analyzers.yaml b/.github/workflows/analyzers.yaml index d32db0f2..2088d667 100644 --- a/.github/workflows/analyzers.yaml +++ b/.github/workflows/analyzers.yaml @@ -12,7 +12,7 @@ jobs: strategy: matrix: operating-system: [ubuntu-latest] - php-versions: ['8.1', '8.2'] + php-versions: ['8.1', '8.2', '8.3'] fail-fast: false name: PHP ${{ matrix.php-versions }} @ ${{ matrix.operating-system }} steps: @@ -25,6 +25,6 @@ jobs: tools: 'composer:v2' extensions: pcov, mbstring, posix, xdebug, dom, libxml, xml, xsl, xmlreader, xmlwriter - name: Install dependencies - run: composer update --prefer-dist --no-progress --no-suggest ${{ matrix.composer-options }} + run: composer update --ignore-platform-req=php --prefer-dist --no-progress --no-suggest ${{ matrix.composer-options }} - name: Run the tests run: composer run psalm diff --git a/.github/workflows/autoloader.yaml b/.github/workflows/autoloader.yaml index baf74b54..cb69366b 100644 --- a/.github/workflows/autoloader.yaml +++ b/.github/workflows/autoloader.yaml @@ -7,7 +7,7 @@ jobs: strategy: matrix: operating-system: [ubuntu-latest] - php-versions: ['8.1', '8.2'] + php-versions: ['8.1', '8.2', '8.3'] fail-fast: false name: PHP ${{ matrix.php-versions }} @ ${{ matrix.operating-system }} steps: @@ -20,7 +20,7 @@ jobs: tools: 'composer:v2' extensions: pcov, mbstring, posix - name: Install dependencies - run: composer update --prefer-dist --no-progress --no-suggest ${{ matrix.composer-options }} + run: composer update --ignore-platform-req=php --prefer-dist --no-progress --no-suggest ${{ matrix.composer-options }} - name: Parse autoloader run: composer run autoload - name: Check if the autloader is up to date diff --git a/.github/workflows/code-style.yaml b/.github/workflows/code-style.yaml index ed80b341..af697430 100644 --- a/.github/workflows/code-style.yaml +++ b/.github/workflows/code-style.yaml @@ -1,13 +1,17 @@ name: CodeStyle on: [push, pull_request] + +env: + PHP_CS_FIXER_IGNORE_ENV: 1 + jobs: run: runs-on: ${{ matrix.operating-system }} strategy: matrix: operating-system: [ubuntu-latest] - php-versions: ['8.1', '8.2'] + php-versions: ['8.1', '8.2', '8.3'] fail-fast: false name: PHP ${{ matrix.php-versions }} @ ${{ matrix.operating-system }} steps: @@ -20,6 +24,6 @@ jobs: tools: 'composer:v2' extensions: pcov, mbstring, posix - name: Install dependencies - run: composer update --prefer-dist --no-progress --no-suggest ${{ matrix.composer-options }} + run: composer --ignore-platform-req=php update --prefer-dist --no-progress --no-suggest ${{ matrix.composer-options }} - name: Run the tests run: composer run cs diff --git a/.github/workflows/stress.yaml b/.github/workflows/stress.yaml index 6ce86308..744f9ee5 100644 --- a/.github/workflows/stress.yaml +++ b/.github/workflows/stress.yaml @@ -7,7 +7,7 @@ jobs: strategy: matrix: operating-system: [ubuntu-latest] - php-versions: ['8.1', '8.2'] + php-versions: ['8.1', '8.2', '8.3'] fail-fast: false name: PHP ${{ matrix.php-versions }} @ ${{ matrix.operating-system }} steps: @@ -21,6 +21,6 @@ jobs: tools: 'composer:v2' extensions: pcov, mbstring, posix, dom, libxml, xml, xsl, xmlreader, xmlwriter - name: Install dependencies - run: composer update --prefer-dist --no-progress --no-suggest + run: composer update --ignore-platform-req=php --prefer-dist --no-progress --no-suggest - name: Run the stress tests run: composer run stress diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index af0d0a6e..be915035 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -12,7 +12,7 @@ jobs: strategy: matrix: operating-system: [ubuntu-latest] - php-versions: ['8.1', '8.2'] + php-versions: ['8.1', '8.2', '8.3'] experimental: [false] fail-fast: false name: PHP ${{ matrix.php-versions }} @ ${{ matrix.operating-system }} @@ -27,7 +27,7 @@ jobs: ini-values: error_reporting=E_ALL extensions: pcov, mbstring, posix, dom, libxml, xml, xsl, xmlreader, xmlwriter - name: Install dependencies - run: composer update --prefer-dist --no-progress --no-suggest + run: composer update --ignore-platform-req=php --prefer-dist --no-progress --no-suggest - name: Run the tests run: composer run tests - name: Check tests quality diff --git a/composer.json b/composer.json index fe20a916..855257fd 100644 --- a/composer.json +++ b/composer.json @@ -7,7 +7,7 @@ ], "type": "library", "require": { - "php": "~8.1.0 || ~8.2.0", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0", "ext-dom": "*", "ext-libxml": "*", "ext-xml": "*", From b56859a307a8d31f5ffd6f8b9ac5ecb43eaddad1 Mon Sep 17 00:00:00 2001 From: Toon Verwerft Date: Thu, 23 Nov 2023 14:27:47 +0100 Subject: [PATCH 2/4] Fix test deprecations --- .phive/phars.xml | 6 +- phpunit.xml | 2 +- .../Dom/Builder/NamespacedAttributeTest.php | 2 +- tests/Xml/Dom/Loader/XmlFileLoaderTest.php | 4 +- tests/Xml/Dom/Loader/XmlStringLoaderTest.php | 2 +- .../Dom/Locator/Element/ParentElementTest.php | 2 +- .../Dom/Locator/Node/DetectDocumentTest.php | 2 +- tests/Xml/Dom/Manipulator/Node/RenameTest.php | 2 +- .../Xml/Dom/Manipulator/Xmlns/RenameTest.php | 2 +- tests/Xml/Dom/Mapper/XmlStringTest.php | 2 +- tests/Xml/Dom/Mapper/XsltTemplateTest.php | 2 +- tests/Xml/Dom/Xpath/Locator/EvaluateTest.php | 4 +- .../Xml/Dom/Xpath/Locator/QuerySingleTest.php | 6 +- tests/Xml/Dom/Xpath/Locator/QueryTest.php | 4 +- .../AssertStrictPrefixedNameTest.php | 2 +- .../Xml/ErrorHandling/DisallowIssuesTest.php | 4 +- .../DisallowLibxmlFalseReturnsTest.php | 2 +- .../Xml/Reader/Configurator/XsdSchemaTest.php | 6 +- tests/Xml/Reader/Loader/XmlFileLoaderTest.php | 2 +- .../Xml/Reader/Loader/XmlStringLoaderTest.php | 2 +- tests/Xml/Reader/Node/NodeSequenceTest.php | 2 +- tests/Xml/Reader/Node/PointerTest.php | 2 +- tests/Xml/Reader/ReaderTest.php | 2 +- tests/Xml/Writer/Builder/AttributeTest.php | 2 +- tests/Xml/Writer/Builder/ChildrenTest.php | 2 +- .../Writer/Builder/PrefixedAttributeTest.php | 2 +- .../Writer/Builder/PrefixedAttributesTest.php | 2 +- tests/Xml/Writer/Configurator/OpenTest.php | 2 +- tests/Xml/Writer/Opener/XmlFileOpenerTest.php | 2 +- tests/Xml/Writer/WriterTest.php | 4 +- tests/Xml/Xslt/Configurator/FunctionsTest.php | 2 +- .../Xml/Xslt/Configurator/ParametersTest.php | 2 +- tests/Xml/Xslt/Configurator/ProfilerTest.php | 2 +- tools/infection.phar | Bin 998182 -> 1011925 bytes tools/php-cs-fixer.phar | Bin 2684413 -> 2762141 bytes tools/phpunit.phar | 4829 ++++++++++------- 36 files changed, 2954 insertions(+), 1963 deletions(-) diff --git a/.phive/phars.xml b/.phive/phars.xml index 624b97c3..1862966a 100644 --- a/.phive/phars.xml +++ b/.phive/phars.xml @@ -1,6 +1,6 @@ - - - + + + diff --git a/phpunit.xml b/phpunit.xml index 1dbb0c76..d3c83b4a 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -8,7 +8,7 @@ beStrictAboutCoversAnnotation="false" beStrictAboutOutputDuringTests="true" beStrictAboutTodoAnnotatedTests="true" - verbose="true" + verbose="false" > diff --git a/tests/Xml/Dom/Builder/NamespacedAttributeTest.php b/tests/Xml/Dom/Builder/NamespacedAttributeTest.php index af4fb4c1..695d6dfe 100644 --- a/tests/Xml/Dom/Builder/NamespacedAttributeTest.php +++ b/tests/Xml/Dom/Builder/NamespacedAttributeTest.php @@ -18,7 +18,7 @@ public function test_it_throws_exception_if_the_attribute_name_is_not_qualified( $ns = 'https://namespace.com'; $this->expectException(InvalidArgumentException::class); - $this->expectErrorMessage('The provided value "key1" is not a QName, expected ns:name instead'); + $this->expectExceptionMessage('The provided value "key1" is not a QName, expected ns:name instead'); element( 'hello', diff --git a/tests/Xml/Dom/Loader/XmlFileLoaderTest.php b/tests/Xml/Dom/Loader/XmlFileLoaderTest.php index 1fd62768..7a9fdb85 100644 --- a/tests/Xml/Dom/Loader/XmlFileLoaderTest.php +++ b/tests/Xml/Dom/Loader/XmlFileLoaderTest.php @@ -48,7 +48,7 @@ public function test_it_cannot_load_invalid_xml_file(): void $loader = xml_file_loader($file); $this->expectException(RuntimeException::class); - $this->expectErrorMessage('Could not load the DOM Document'); + $this->expectExceptionMessage('Could not load the DOM Document'); $loader($doc); fclose($handle); @@ -60,7 +60,7 @@ public function test_it_throws_exception_on_invalid_file(): void $loader = xml_file_loader('invalid-file'); $this->expectException(RuntimeException::class); - $this->expectErrorMessage('The file "invalid-file" does not exist'); + $this->expectExceptionMessage('The file "invalid-file" does not exist'); $loader($doc); } diff --git a/tests/Xml/Dom/Loader/XmlStringLoaderTest.php b/tests/Xml/Dom/Loader/XmlStringLoaderTest.php index 23d1844f..31111691 100644 --- a/tests/Xml/Dom/Loader/XmlStringLoaderTest.php +++ b/tests/Xml/Dom/Loader/XmlStringLoaderTest.php @@ -28,7 +28,7 @@ public function test_it_can_not_load_invalid_xml_string(): void $loader = xml_string_loader($xml); $this->expectException(RuntimeException::class); - $this->expectErrorMessage('Could not load the DOM Document'); + $this->expectExceptionMessage('Could not load the DOM Document'); $loader($doc); } diff --git a/tests/Xml/Dom/Locator/Element/ParentElementTest.php b/tests/Xml/Dom/Locator/Element/ParentElementTest.php index 3368d03c..6d323468 100644 --- a/tests/Xml/Dom/Locator/Element/ParentElementTest.php +++ b/tests/Xml/Dom/Locator/Element/ParentElementTest.php @@ -34,7 +34,7 @@ public function test_it_can_detect_parents(): void static::assertSame($hello, $domdoc->documentElement); $this->expectException(RuntimeException::class); - $this->expectErrorMessage('Can not find parent element for DOMElement hello'); + $this->expectExceptionMessage('Can not find parent element for DOMElement hello'); parent_element($hello); } } diff --git a/tests/Xml/Dom/Locator/Node/DetectDocumentTest.php b/tests/Xml/Dom/Locator/Node/DetectDocumentTest.php index 10502b3d..d304228f 100644 --- a/tests/Xml/Dom/Locator/Node/DetectDocumentTest.php +++ b/tests/Xml/Dom/Locator/Node/DetectDocumentTest.php @@ -27,7 +27,7 @@ public function test_it_throws_exception_on_unlinked_node(): void $element = new DOMElement('name'); $this->expectException(InvalidArgumentException::class); - $this->expectErrorMessage('Expected to find an ownerDocument on provided DOMNode.'); + $this->expectExceptionMessage('Expected to find an ownerDocument on provided DOMNode.'); detect_document($element); } diff --git a/tests/Xml/Dom/Manipulator/Node/RenameTest.php b/tests/Xml/Dom/Manipulator/Node/RenameTest.php index 193020a2..975434cf 100644 --- a/tests/Xml/Dom/Manipulator/Node/RenameTest.php +++ b/tests/Xml/Dom/Manipulator/Node/RenameTest.php @@ -168,7 +168,7 @@ public function test_it_can_not_rename_namespaced_attribute_prefix_when_the_xmln $node = $root->getAttributeNode('a:who'); $this->expectException(RuntimeException::class); - $this->expectErrorMessage('Unable to rename attribute a:who into b:you'); + $this->expectExceptionMessage('Unable to rename attribute a:who into b:you'); rename($node, 'b:you'); } diff --git a/tests/Xml/Dom/Manipulator/Xmlns/RenameTest.php b/tests/Xml/Dom/Manipulator/Xmlns/RenameTest.php index 484e4e70..09b161af 100644 --- a/tests/Xml/Dom/Manipulator/Xmlns/RenameTest.php +++ b/tests/Xml/Dom/Manipulator/Xmlns/RenameTest.php @@ -30,7 +30,7 @@ public function test_it_can_not_rename_existing_prefix_to_other_uri(): void $document = Document::fromXmlString('')->toUnsafeDocument(); $this->expectException(RuntimeException::class); - $this->expectErrorMessage('Cannot rename the namespace uri http://replace because the prefix ns1 is already linked to uri http://ok'); + $this->expectExceptionMessage('Cannot rename the namespace uri http://replace because the prefix ns1 is already linked to uri http://ok'); rename($document, 'http://replace', 'ns1'); } diff --git a/tests/Xml/Dom/Mapper/XmlStringTest.php b/tests/Xml/Dom/Mapper/XmlStringTest.php index 5fb83b13..7d66e9c4 100644 --- a/tests/Xml/Dom/Mapper/XmlStringTest.php +++ b/tests/Xml/Dom/Mapper/XmlStringTest.php @@ -31,7 +31,7 @@ public function test_it_can_map_node_to_xml(): void public function test_it_throws_exception_on_invalid_node(): void { $this->expectException(RuntimeException::class); - $this->expectErrorMessage('Expected to find an ownerDocument on provided DOMNode'); + $this->expectExceptionMessage('Expected to find an ownerDocument on provided DOMNode'); xml_string()(new DOMElement('hello')); } } diff --git a/tests/Xml/Dom/Mapper/XsltTemplateTest.php b/tests/Xml/Dom/Mapper/XsltTemplateTest.php index cc9e8061..ab845a41 100644 --- a/tests/Xml/Dom/Mapper/XsltTemplateTest.php +++ b/tests/Xml/Dom/Mapper/XsltTemplateTest.php @@ -46,7 +46,7 @@ public function test_it_returns_empty_string_on_invalid_value_tag(): void public function test_it_fails_on_invalid_template_thingies(): void { $this->expectException(RuntimeException::class); - $this->expectErrorMessage('Unable to apply the XSLT template'); + $this->expectExceptionMessage('Unable to apply the XSLT template'); xslt_template( Document::fromXmlString( diff --git a/tests/Xml/Dom/Xpath/Locator/EvaluateTest.php b/tests/Xml/Dom/Xpath/Locator/EvaluateTest.php index 3ec9be1c..eafc5da1 100644 --- a/tests/Xml/Dom/Xpath/Locator/EvaluateTest.php +++ b/tests/Xml/Dom/Xpath/Locator/EvaluateTest.php @@ -15,8 +15,8 @@ public function test_it_can_handle_xpath_errors(): void $xpath = $this->provideXml()->xpath(); $this->expectException(RuntimeException::class); - $this->expectErrorMessage('Failed querying XPath query'); - $this->expectErrorMessage('[ERROR] : Invalid expression'); + $this->expectExceptionMessage('Failed querying XPath query'); + $this->expectExceptionMessage('[ERROR] : Invalid expression'); $xpath->evaluate('$p$m``m$^^$^^jibberish', Type\string()); } diff --git a/tests/Xml/Dom/Xpath/Locator/QuerySingleTest.php b/tests/Xml/Dom/Xpath/Locator/QuerySingleTest.php index c8e79705..ee2d5777 100644 --- a/tests/Xml/Dom/Xpath/Locator/QuerySingleTest.php +++ b/tests/Xml/Dom/Xpath/Locator/QuerySingleTest.php @@ -15,8 +15,8 @@ public function test_it_can_handle_xpath_errors(): void $xpath = $this->provideXml()->xpath(); $this->expectException(RuntimeException::class); - $this->expectErrorMessage('Failed querying XPath query'); - $this->expectErrorMessage('[ERROR] : Invalid expression'); + $this->expectExceptionMessage('Failed querying XPath query'); + $this->expectExceptionMessage('[ERROR] : Invalid expression'); $xpath->querySingle('$p$m``m$^^$^^jibberish'); } @@ -26,7 +26,7 @@ public function test_it_throws_on_multiple_xpath_elements(): void { $xpath = $this->provideXml()->xpath(); - $this->expectErrorMessage('Expected to find only one node that matches //items. Got 2'); + $this->expectExceptionMessage('Expected to find only one node that matches //items. Got 2'); $xpath->querySingle('//items'); } diff --git a/tests/Xml/Dom/Xpath/Locator/QueryTest.php b/tests/Xml/Dom/Xpath/Locator/QueryTest.php index 444f35e7..35d98f62 100644 --- a/tests/Xml/Dom/Xpath/Locator/QueryTest.php +++ b/tests/Xml/Dom/Xpath/Locator/QueryTest.php @@ -14,8 +14,8 @@ public function test_it_can_handle_xpath_errors(): void $xpath = $this->provideXml()->xpath(); $this->expectException(RuntimeException::class); - $this->expectErrorMessage('Failed querying XPath query'); - $this->expectErrorMessage('[ERROR] : Invalid expression'); + $this->expectExceptionMessage('Failed querying XPath query'); + $this->expectExceptionMessage('[ERROR] : Invalid expression'); $xpath->query('$p$m``m$^^$^^jibberish'); } diff --git a/tests/Xml/ErrorHandling/Assertion/AssertStrictPrefixedNameTest.php b/tests/Xml/ErrorHandling/Assertion/AssertStrictPrefixedNameTest.php index 1c07ecd4..5e3c951b 100644 --- a/tests/Xml/ErrorHandling/Assertion/AssertStrictPrefixedNameTest.php +++ b/tests/Xml/ErrorHandling/Assertion/AssertStrictPrefixedNameTest.php @@ -27,7 +27,7 @@ public function test_it_does_nothing_on_valid_qnames(string $input): void public function test_it_throws_on_invalid_qnames(string $input): void { $this->expectException(InvalidArgumentException::class); - $this->expectErrorMessage('The provided value "'.$input.'" is not a QName, expected ns:name instead.'); + $this->expectExceptionMessage('The provided value "'.$input.'" is not a QName, expected ns:name instead.'); assert_strict_prefixed_name($input); } diff --git a/tests/Xml/ErrorHandling/DisallowIssuesTest.php b/tests/Xml/ErrorHandling/DisallowIssuesTest.php index 9c4e024d..73401dbf 100644 --- a/tests/Xml/ErrorHandling/DisallowIssuesTest.php +++ b/tests/Xml/ErrorHandling/DisallowIssuesTest.php @@ -29,7 +29,7 @@ static function (): string { public function test_it_can_detect_xml_errors_inside_callable_and_return_ok(): void { $this->expectException(RuntimeException::class); - $this->expectErrorMessage('XML issues detected'); + $this->expectExceptionMessage('XML issues detected'); $result = ErrorHandling\disallow_issues( static function (): string { @@ -45,7 +45,7 @@ public function test_it_can_detect_xml_errors_inside_callable_and_return_a_failu $exception = new Exception('nonono'); $this->expectException(RuntimeException::class); - $this->expectErrorMessage('nonono'); + $this->expectExceptionMessage('nonono'); ErrorHandling\disallow_issues( static function () use ($exception) { diff --git a/tests/Xml/ErrorHandling/DisallowLibxmlFalseReturnsTest.php b/tests/Xml/ErrorHandling/DisallowLibxmlFalseReturnsTest.php index e061401f..2d3379c5 100644 --- a/tests/Xml/ErrorHandling/DisallowLibxmlFalseReturnsTest.php +++ b/tests/Xml/ErrorHandling/DisallowLibxmlFalseReturnsTest.php @@ -20,7 +20,7 @@ public function test_it_continues_when_not_false(): void public function test_it_throws_when_false(): void { $this->expectException(RuntimeException::class); - $this->expectErrorMessage('nope'); + $this->expectExceptionMessage('nope'); disallow_libxml_false_returns(false, 'nope'); } diff --git a/tests/Xml/Reader/Configurator/XsdSchemaTest.php b/tests/Xml/Reader/Configurator/XsdSchemaTest.php index eb2ffde6..c4855d3b 100644 --- a/tests/Xml/Reader/Configurator/XsdSchemaTest.php +++ b/tests/Xml/Reader/Configurator/XsdSchemaTest.php @@ -59,7 +59,7 @@ public function test_it_triggers_an_error_on_invalid_schema(): void $iterator = $reader->provide(node_name('user')); $this->expectException(RuntimeException::class); - $this->expectErrorMessage('Detected issues during the parsing of the XML Stream'); + $this->expectExceptionMessage('Detected issues during the parsing of the XML Stream'); [...$iterator]; fclose($xsdHandle); @@ -74,7 +74,7 @@ public function test_it_triggers_an_error_if_schema_file_does_not_exist(): void $iterator = $reader->provide(node_name('user')); $this->expectException(RuntimeException::class); - $this->expectErrorMessage('The file "unkown-file" does not exist.'); + $this->expectExceptionMessage('The file "unkown-file" does not exist.'); [...$iterator]; fclose($xsdHandle); @@ -103,7 +103,7 @@ public function test_it_can_not_set_a_schema_if_the_schema_is_invalid(): void $iterator = $reader->provide(node_name('user')); $this->expectException(RuntimeException::class); - $this->expectErrorMessage('Schema contains errors'); + $this->expectExceptionMessage('Schema contains errors'); [...$iterator]; fclose($xsdHandle); diff --git a/tests/Xml/Reader/Loader/XmlFileLoaderTest.php b/tests/Xml/Reader/Loader/XmlFileLoaderTest.php index 3088b9a7..0e54623c 100644 --- a/tests/Xml/Reader/Loader/XmlFileLoaderTest.php +++ b/tests/Xml/Reader/Loader/XmlFileLoaderTest.php @@ -17,7 +17,7 @@ final class XmlFileLoaderTest extends TestCase public function test_it_invalid_file_loader(): void { $this->expectException(RuntimeException::class); - $this->expectErrorMessage('The file "invalid-file" does not exist.'); + $this->expectExceptionMessage('The file "invalid-file" does not exist.'); xml_file_loader('invalid-file')(); } diff --git a/tests/Xml/Reader/Loader/XmlStringLoaderTest.php b/tests/Xml/Reader/Loader/XmlStringLoaderTest.php index 5a855719..e1d62097 100644 --- a/tests/Xml/Reader/Loader/XmlStringLoaderTest.php +++ b/tests/Xml/Reader/Loader/XmlStringLoaderTest.php @@ -13,7 +13,7 @@ final class XmlStringLoaderTest extends TestCase public function test_it_can_handle_invalid_string_loader(): void { $this->expectException(RuntimeException::class); - $this->expectErrorMessage('The provided XML can not be empty!'); + $this->expectExceptionMessage('The provided XML can not be empty!'); xml_string_loader('')(); } diff --git a/tests/Xml/Reader/Node/NodeSequenceTest.php b/tests/Xml/Reader/Node/NodeSequenceTest.php index 3b5ad38e..5b3d4271 100644 --- a/tests/Xml/Reader/Node/NodeSequenceTest.php +++ b/tests/Xml/Reader/Node/NodeSequenceTest.php @@ -19,7 +19,7 @@ public function test_it_can_be_empty(): void static::assertNull($sequence->parent()); $this->expectException(InvalidArgumentException::class); - $this->expectErrorMessage('The node sequence is empty. Can not fetch current item!'); + $this->expectExceptionMessage('The node sequence is empty. Can not fetch current item!'); $sequence->current(); } diff --git a/tests/Xml/Reader/Node/PointerTest.php b/tests/Xml/Reader/Node/PointerTest.php index d2fd1206..1a6365c7 100644 --- a/tests/Xml/Reader/Node/PointerTest.php +++ b/tests/Xml/Reader/Node/PointerTest.php @@ -25,7 +25,7 @@ public function test_it_is_empty_at_the_start(): void public function test_it_cannot_leave_element_on_empty(): void { $this->expectException(InvalidArgumentException::class); - $this->expectErrorMessage('Currently at root level. Can not leave element!'); + $this->expectExceptionMessage('Currently at root level. Can not leave element!'); $pointer = Pointer::create(); $pointer->leaveElement(); diff --git a/tests/Xml/Reader/ReaderTest.php b/tests/Xml/Reader/ReaderTest.php index 6713e4df..940eb84f 100644 --- a/tests/Xml/Reader/ReaderTest.php +++ b/tests/Xml/Reader/ReaderTest.php @@ -60,7 +60,7 @@ public function test_it_throws_exception_on_invalid_xml_during_iteration(): void $iterator = $reader->provide(static fn () => true); $this->expectException(RuntimeException::class); - $this->expectErrorMessage('Detected issues during the parsing of the XML Stream'); + $this->expectExceptionMessage('Detected issues during the parsing of the XML Stream'); [...$iterator]; } diff --git a/tests/Xml/Writer/Builder/AttributeTest.php b/tests/Xml/Writer/Builder/AttributeTest.php index 054a5d4a..5035a88d 100644 --- a/tests/Xml/Writer/Builder/AttributeTest.php +++ b/tests/Xml/Writer/Builder/AttributeTest.php @@ -36,7 +36,7 @@ public function test_it_can_add_atribute_to_element(): void public function test_it_can_not_write_attribute_to_invalid_context(): void { $this->expectException(RuntimeException::class); - $this->expectErrorMessage('Could not write the provided XML to the stream.'); + $this->expectExceptionMessage('Could not write the provided XML to the stream.'); $this->runInMemory(static function (XMLWriter $xmlWriter): void { $writer = Writer::fromUnsafeWriter($xmlWriter); diff --git a/tests/Xml/Writer/Builder/ChildrenTest.php b/tests/Xml/Writer/Builder/ChildrenTest.php index fd3af1e8..74ace1f6 100644 --- a/tests/Xml/Writer/Builder/ChildrenTest.php +++ b/tests/Xml/Writer/Builder/ChildrenTest.php @@ -49,7 +49,7 @@ public function test_it_can_create_child_elements(): void public function test_it_can_not_write_attributes_in_between_elements(): void { $this->expectException(RuntimeException::class); - $this->expectErrorMessage('Could not write the provided XML to the stream.'); + $this->expectExceptionMessage('Could not write the provided XML to the stream.'); $this->runInMemory(static function (XMLWriter $xmlWriter): void { $writer = Writer::fromUnsafeWriter($xmlWriter); diff --git a/tests/Xml/Writer/Builder/PrefixedAttributeTest.php b/tests/Xml/Writer/Builder/PrefixedAttributeTest.php index 2ee51083..00807edb 100644 --- a/tests/Xml/Writer/Builder/PrefixedAttributeTest.php +++ b/tests/Xml/Writer/Builder/PrefixedAttributeTest.php @@ -36,7 +36,7 @@ public function test_it_can_add_atribute_to_element(): void public function test_it_can_not_write_attribute_to_invalid_context(): void { $this->expectException(RuntimeException::class); - $this->expectErrorMessage('Could not write the provided XML to the stream.'); + $this->expectExceptionMessage('Could not write the provided XML to the stream.'); $this->runInMemory(static function (XMLWriter $xmlWriter): void { $writer = Writer::fromUnsafeWriter($xmlWriter); diff --git a/tests/Xml/Writer/Builder/PrefixedAttributesTest.php b/tests/Xml/Writer/Builder/PrefixedAttributesTest.php index 6eab28a6..bd7bb9ce 100644 --- a/tests/Xml/Writer/Builder/PrefixedAttributesTest.php +++ b/tests/Xml/Writer/Builder/PrefixedAttributesTest.php @@ -39,7 +39,7 @@ public function test_it_can_add_atributes_to_element(): void public function test_it_throws_exception_on_non_prefixed_attribute(): void { $this->expectException(RuntimeException::class); - $this->expectErrorMessage('The provided value "default" is not a QName, expected ns:name instead'); + $this->expectExceptionMessage('The provided value "default" is not a QName, expected ns:name instead'); $this->runInMemory(static function (XMLWriter $xmlWriter): void { $writer = Writer::fromUnsafeWriter($xmlWriter); diff --git a/tests/Xml/Writer/Configurator/OpenTest.php b/tests/Xml/Writer/Configurator/OpenTest.php index 4c1d62ec..4e9212e0 100644 --- a/tests/Xml/Writer/Configurator/OpenTest.php +++ b/tests/Xml/Writer/Configurator/OpenTest.php @@ -23,7 +23,7 @@ public function test_it_can_open(): void public function test_it_can_fail_opening(): void { $this->expectException(RuntimeException::class); - $this->expectErrorMessage('Could not open the writer stream.'); + $this->expectExceptionMessage('Could not open the writer stream.'); $xmlWriter = new XMLWriter(); open(static fn () => false)($xmlWriter); diff --git a/tests/Xml/Writer/Opener/XmlFileOpenerTest.php b/tests/Xml/Writer/Opener/XmlFileOpenerTest.php index df5b4db1..6d3c97ec 100644 --- a/tests/Xml/Writer/Opener/XmlFileOpenerTest.php +++ b/tests/Xml/Writer/Opener/XmlFileOpenerTest.php @@ -29,7 +29,7 @@ public function test_it_can_open_a_file(): void public function test_it_errors_if_file_is_not_writable(): void { $this->expectException(RuntimeException::class); - $this->expectErrorMessage('The path "doesnotexist" is not writable.'); + $this->expectExceptionMessage('The path "doesnotexist" is not writable.'); Writer::forFile('doesnotexist'); } diff --git a/tests/Xml/Writer/WriterTest.php b/tests/Xml/Writer/WriterTest.php index f1c9db60..4cff4590 100644 --- a/tests/Xml/Writer/WriterTest.php +++ b/tests/Xml/Writer/WriterTest.php @@ -70,7 +70,7 @@ public function test_it_can_use_an_unsafe_writer(): void public function test_it_throws_error_on_not_initialized(): void { - $this->expectErrorMessage('Invalid or uninitialized XMLWriter object'); + $this->expectExceptionMessage('Invalid or uninitialized XMLWriter object'); $emptyWriter = Writer::configure(); $emptyWriter->write(element('root')); @@ -79,7 +79,7 @@ public function test_it_throws_error_on_not_initialized(): void public function test_it_throws_error_on_invalid_write(): void { $this->expectException(RuntimeException::class); - $this->expectErrorMessage('Could not write the provided XML to the stream.'); + $this->expectExceptionMessage('Could not write the provided XML to the stream.'); $this->runInMemory(static function (XMLWriter $xmlWriter): void { $writer = Writer::fromUnsafeWriter($xmlWriter); diff --git a/tests/Xml/Xslt/Configurator/FunctionsTest.php b/tests/Xml/Xslt/Configurator/FunctionsTest.php index c519b0a8..d7a91223 100644 --- a/tests/Xml/Xslt/Configurator/FunctionsTest.php +++ b/tests/Xml/Xslt/Configurator/FunctionsTest.php @@ -47,7 +47,7 @@ functions(['substr']) ); $this->expectException(RuntimeException::class); - $this->expectErrorMessage('Not allowed to call handler \'strtoupper()\''); + $this->expectExceptionMessage('Not allowed to call handler \'strtoupper()\''); $processor->transformDocumentToString($doc); } diff --git a/tests/Xml/Xslt/Configurator/ParametersTest.php b/tests/Xml/Xslt/Configurator/ParametersTest.php index 475f6933..ebe45bbb 100644 --- a/tests/Xml/Xslt/Configurator/ParametersTest.php +++ b/tests/Xml/Xslt/Configurator/ParametersTest.php @@ -40,7 +40,7 @@ public function test_it_throws_exception_if_param_is_not_set(): void ); $this->expectException(RuntimeException::class); - $this->expectErrorMessage('Unable to apply the XSLT template'); + $this->expectExceptionMessage('Unable to apply the XSLT template'); $processor->transformDocumentToString($doc); } diff --git a/tests/Xml/Xslt/Configurator/ProfilerTest.php b/tests/Xml/Xslt/Configurator/ProfilerTest.php index 68284785..16421515 100644 --- a/tests/Xml/Xslt/Configurator/ProfilerTest.php +++ b/tests/Xml/Xslt/Configurator/ProfilerTest.php @@ -35,7 +35,7 @@ public function test_it_can_use_a_profiler(): void public function test_setting_an_invalid_profiler_location_doesnt_result(): void { $this->expectException(RuntimeException::class); - $this->expectErrorMessage('The file "/THISFOLDERSHOULDNOTEXIST" does not exist.'); + $this->expectExceptionMessage('The file "/THISFOLDERSHOULDNOTEXIST" does not exist.'); Processor::fromTemplateDocument( $this->createTemplate(), diff --git a/tools/infection.phar b/tools/infection.phar index 3760596f9d50b61087d840835e8ebbf9b80c7a18..257191b97d9f90200b965e27752494e0f12255e3 100755 GIT binary patch delta 182385 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

N@^H!r~`L)8HR70 z0~NqQ6sfaCen~hMxNn&-g|}K;eA}noLmACOwbJP5jUl352;dWjvj|CdZ(X!xv-JY7#%m^G zeQyhm(mq5H!6RXQ)41`ZHbdvmOF_*CJ1TR~?TjWt59hPLIqy#coLyk`8FAS5*8qxr zlYfH+S$r79Suvx((B+7e6TF=+$l-Hf0{*r|y)4IF(f_M|d?oHx!mt{TXq+m7fD*zW z^HV+K)|NfQhmoc8*epUTDNXTGd?5|{&L7FmKoHMBF~3tSde|ShZ9y&})7HL-Z{ZM( z5d0b@YcP|;Wqr5pnU&zrlBEK^*WY=Yzkd$Cmt-<@JOzu~yag+CI?0kF)95_)wh+*> z)FlKL!SsCCbHiXoK#MhL;ZR2gD%zL%yfTh~Ya3MIK;A))@}8oZ>GcbEYr9-{@iI@nYhGqsepe~MMqc)ymmoefPf=MXG(-3j+DTWZzB)3a3!_|@ zL@ype3g_?2LUu=AJU>3JaX|E4pu8H&%%^)qH*vxyf>%m-#JEhWFU_*BBLqg*StsYi z@w95Cl{~F3wcdsd^jAuYC`*S!!q$+2V5zeLx(tp zP4G(Ur$lmZ=k5oJl93DS8i*1Rm$?7vOa2GE-btb=cCzwLV%a}m4pH?FNxF*ff);Q7 zsQ50pVxa788FWWgmT+)+aT>S{jI1e0r^2L#gDskjSBVY|z`Nt3jP(ebrhlzv>?n=d z6EuyR%bnyT0+NQ0Jpke8#CRH=2jieO?Ajf3{7a8Lr(0IB6?^Gi5Gsj$s^umP7FIhM z&qUl#B>29m;-yByvw9N5PWwqEB9@|mpy{J~&W)y2IEbiElUpz5&{}k&y{^4~kK|57 zN)pt}GHf9XK`Gwf7~w;wg?|t(_hZ>jrw0Gb+gW5*J#e&zTH=Jx3I)J^q!Qk_@ZGOpCANmy*qy`Y?;x#2g-ll-yy4zPX+-C~holnY<;fl)?HDLlt zeR1tNX|+&cRBmn*??5tt@&kH>&ewiTQ0@isE#U*l-jB9IbLi(Q?*zj!QR5tivhY&5 zZd#?G;^I~7BdfGBW`7?_E1J7z;FA$F?FhRfs2c%|2x<(Jf}r6L=VXTnB4JJLQ>d1a zyHBFgLT&*+wr-ya%#yuzwzVQ4!8dN_ARI|449rU9#2r9?e#{a;pJ-j1mn{@xZT-oV z9!9zbXn9eK&Q{|M5y)AoqzZuYd_@CvLzn}~+xmc#lrnS%8~( zyDYpI&q2KO1`_%G;nOd@2>{*~FJC_WlAjb|PbO4|i*v%vwL7&38|sQuyR!t- z%AsrJnA0!7N`KgT-0I0|Dwbyqi*h_#S)cPES#jG$RD%T{^@BEpH^EXbL<^P|42vQ# z6Owu%y0Ws@sd(15H=bXo@Yl+e7G>O&AzR*UgeWfk-XQH$KN5uyYJf%@a@bWfYj~{& z+FpmSNsvTZ8UPnh2IdF9=%9pyF)a%Q)#QrHF@~(3GJh$xM2*NcB`%`cUnqC4siaI3 zLls?Hhu4W7gL+Ke%oo}tN^fp*Q0VgzhY5m$K%XL5+_Bxl85%b0e8CNE!#M=9d|`-+ zzm0-H)V&;sZ==&ODo|79DAtDsD&T4gSK`(pEBu<)v#a>G$%&8MtBHZLn>!82`lI0b?aL1oBI5$?@3Qc^o-pbFN2^ z4*nariX#XP1AlFA+cpsX?q9*UMkqQ?(sbYK#)j9mMXR|;cx&b3IwlM2uqSW;z z?r+~6NxfK--4ye%Ab>6E?z!h4-tomxC-ExobV3nG6$?+2tME>Gsa%XY9WM%1O0KVd zCYOXd6X%!bFRorcXB`56&g7}`!{u83mPKGaOA~k+bARf7;P^-9{S#+0#II+SA=W?P zv;bH{*=-G=YmB=M_pb5omeGxaGdXVZVD~WGL}!Jw7X^U~)A2dyefL8@kJfi4N9W88 zAXVN!uedDanDehdhj!1uZj6uqKUQT_i)_CyB)dnz!Ua$_ti$NYiu-2zcKT|D`f~0< zlvpGpP=90hgUk6mrv)#L%?k#j#XG>l=K^c`_N7H~07)cE#Bo@T0)xjm2tLe?8w6x? zmxW&HM0Z3eG|mqdFlW~uQ0 zoO&2>%Pf&;mW0N7)Y+5_TS8lM)`de3%NxjJ4S)4~6w6H{8YOe*1-U+ycJ|?sR?C`t7+FD&Mxf}av6{c+@|2M!i%*hF{1~ObsO9E}hr%5Wk==>nli+{^hmoy@{k9CdD zae%gy-{rA0B|r4jJ$V%LdQcU*sC9>NKZw`R9uD@Z&5!A+-yJE=)aqf1J$Z;?)qnh4 zY=biC3q3d@nsil*z1&_$Ng&q#7ub>yNRuMIuWm~1svH@>lTzE8KqgD+)TeLI$c>H2 z##Dh^D+w5Nmxn51hBv!sEsdtg3>7(0rMHM-crY?)a3e#q!+1}jiA2diL~_XXRM{<@ z)>>xf;(J7%hn|R)Ts(};PY+^KY=5y0xp1$={X!GyDdNKkPlTR~?g$Uzvmmu=C`8&3dhlJSi%8U)=@b zPdNU>hg7Y%y|}8j4lxRto>ek+>OL-~_NcDlX2O`UZ}uNx<1u9bWNT~n$6CG%1`Ap0|DbD@^?cWLSDS* zz4~+S?-F{}T=-UgkpeC_Bz3asg-jbtB!o4U9 zp)U22r8-*+A9mh%Nfa(&%UNbfmS|hN(HN2S`5A8+?2Ov!+q7IDns?LMHF)b9;m~u= zdz>#$&Qa%l+GSwoy7zca%gpzoJaQ0(8I;~d&1=uaIEX&V-xJ}lp`_of{M3K^q*J2~ zFLlRr`NFJN!WejdhTh|Z# z#R(_J-dAA1F2%u%73Ca1ES6qzztOE=m1~c&(gm%5q{(H7ed(DTwfagM89vXOC9GCnFbNf4giVrdlmERl#$Y}S3yJQb zdB_5ukKg>pGamT)JiSY2GoN`8%@}cn%tB9YG0S1L2zvN-$v+Oq(r7RP(e`f^#(tI0*9ubmC_zCjFlOaz? z!n2r0;Xe#*Ir9YmACe`(JEc}A<6jt%Vx5EuSV=s_gVNPuO%DGuCi5&IO8ni~EtASR zq_Pxv9)C7_sbKWmv>B3j8Gj%Ndm!!?ej9q99zB*~jLrg*tEeN&56{T9fKB-JZ&+Ap zV9%q7LcR@Ac-JDTh~|_C76r?tjo{UA^k{Qx^j1T-se23|Pv}Q&d?p0))CM<=TO^Fd zP$Nh%tE?){r!j0Q4In`^AfiS$)f z?be7y*T`ZS5z!^#)|${uDg7hEjBBvdxFk*W~o{lq_6#Ve?u`F?w-7 z!+*iJ`!fgnfPCL^MZSfY3R_3yvWtd{N9ZeW#-I2S4xw6=|DV%fAKBPe#nkMw zHMhgfrQBCi4bNSfd7`Iln84hCMxrLA8l|q`f=zNpj*$m-SGBA2PPb}Um08Z35DONu z^XPto_t>$l2yyz9VS=#=P`X*rETg*xbSfD4l^49;avtGtm`MByB2Lvs!K+%4EPpGd z?|JCsubybJ>j7e=h#cTW96mB7ldyZ3AK(H5S*#7ldBh)Bc3s9IGs)ExO;(G@Fxe>J zj!`>m2G`lFB~R@`y)sZIj4%M+W58N_Es*s+!DaoWt6;sPti{WE)oONS=3$$dn4KaG zheW5kG~h&NCxY9ap2Sdl^cFpFP(8M>N|~c z(7(qYG=QDab}T4?_G_FwbT}xDp^*jyDm@Pji0A{}^}+LJCcQhSI&F(8u#;B$z(RYC z4;}Zpt|uT!*W9pM$oL4a#TNkg%Vi#Ku~G_!A-k$kjJN!8yyfy78f*GW$$xLgnAVNN zZg~!kE><@*0{taZP8}K0KZx5j;D6edyMn~o;$4`rmM^VYaN4%I9pG&uz}#a+OLOn)NZ^r z3FN^BdE9JlfNTnLV)~2>nSTy_qVhd$=>5n&m_P8_g){f7YixD;(gg`y$1}pM5vo+` zYkWp=Ou^MK4OCstZA0b7?;2o;csjfhL$vuW>6TE?#I#hrmtcOIOW0JjyevORy4B*Z z8P8K&LMolkG1S!U%S)x-`^qxL#f#omDs97cFTcebiqU{%^slOb2Y=sW)KS(Y$+@gHD%-(+OiQ}4IF*!PzrURStmf>!A9i4iZN~w(XdG;T*S4~gjFc7`x zSNPB+i6|1~NGXU#Ab%mDg&AAR-Or&_M%2kZ%Y_U@3u3@xxl+{Ba2WvV4-nA?an5OMfvehIsr!B@iL0R8t~@ zFs8|s!c%a9jL4HKAcr z{`U#xoUTZZN|a}k%fjZfueTS()vqV#u{b)ftg`kDw-;(BagE}BdYW-ioRv$3S-;q@ zt|d7G`It|Xf`3{A&nKq^%PmeEWX>51q>Z`H9hf&U7gB?%OklHmG@Jj^aTn$t{U~G* zra43Ltudb*kwL4aSo~tYbDG3a3{!1ylBP+$wE-E8Mx@S6yM^z2YR~b4W2L}izKzc=y*sXp~Hs!5@=|8vf9FIRet^&Wn ziXuVKG7cuu$i1=?PHkpJ9U)hiw9F1n@^Em$$=*K8d%lZ!UUeZV{-BSb!g$8 zZbnOpI8h>=4Wl-{y;YFUO9bDdseW?K(^taal?3;>ypO&j+o`x-hL9=$y+Gjg#bo5U z2J6cd<4Mw7k~G4MP^*=m1uNfjZCzogWYQU7l-uT^>E3OZ);tIvfA_A0+sJE%&YLi| zo&1>K2E9RWBcoqsyKa!bA`M32c$=CzCMryIA>2$O?V<_s0)1JJi}PV;ci&c^Zwux3 zcRP%_!)F?$_cMsyOh`>DGe8XWf3j~+Q%yb%p=wff=wv@RbkfxTHtjCeYUq$olq5T1 zwApH8+G%UhVXG6@e?)u%dJ@W2qz)d>Jeof`y)N#3I4Gd(!S01jU#q$irZf0DA)avzvKxgBZtbHl{wFO+_p^hLQ40l>uXv zb${wsm4l8UV{;CD_2~fqDKPQ#pTqDwHhvi(ACD3)V03+HU0H*PbMx(DX!W5BC!NaW z$+bP`+k;D~@vcV0x;5>ATtBT`pW3Fa1DsVZn-^1iV)ku?;6tUxl{Gepa`}CA{K>$) zydDqlq{fF5f?I29U06fQzH?T}BXjyyDt~^=^pez#LJt~2gdTZWlxMFj4C5riF(#rc z4^rZZkP>hl9hs$`Xf;&9j{z};7SQ0St4hRW?E8n66bZ=^Hx;?Ot(|67Qcpw7L;mJ- zNvmMf*;LfqP&&(K_f0KoK0vQmlqyzc!na#a6m02Z7IH^%m^@}XX+sYPege%@%YTEQ$mo0Bg5|%*a!VCdPqiD-)o#?XVTAmr-KWv$D*+m;xT2yPG68eSFG}*9P z%gd(Em8E~gVw#zbRin35N_3SsYRa%k8G(}fW60|yUsM*=_cBNFwXkXVE8omZSVC^P zvUW(aP{D91jjBN3;n>J|)rOAOV+0 z$c~sMp=1%$l^Ix%j(>XIi7-3M zYv5&d-y2(?2zMx8t0_{0ZAFp2;jx^de~j?-Yz5}@Y-ij)BFeS8ABg#8azN4xk##lo zMPWPq9`t-2Giyh1Im>lwui&ZYVR`jYgY8g^`1_kFzggAb%U1VCm)HA$qyKY_4l#~h z%y#s9@hW4>KGH)jy8>2^xeccJ!{X?9)m)CZXX7`wMqLO%27g;`+AtJ;&#&;LY9Uf9 zb+0gr0);6Wbcke?CP0x%9IyyU6gzF%+W$UZxY!AhKEMN*?_9ofe9p1`y_2mn!w69j z!yJJIp*aqyPq!H&?Qd4gNZKZbNWg&%;7t~z4N52hsys zCW_&bv@~e3ouEjEcz!yP!5nT%hB=}|o_K6mbeynoN~)03{70S^*&fgF3#14T3MrRw z;1UNE{#(}PNmL|r ztys~ndw^1fhG>af0P`GfS%r%QZ#+?~`2poc#*2dPa7#Fq?Z-bibcM;?gQlg}w91O2 zRk_ZdZGUPC$ee>tM@9KuO7OnoL^QYVL_ku17QvXHiV@G1*~~EUWz}T*7U+Nky~>$$ zLN;nR!YJPho9f&s-sI@$F-S}XF`X+W$C=U%j<_^Ria4$?X~t^wN5R<~RF!6RwiOmJ z-kd;`-Cv`vkKQn$q+tq?d3y|;(PKAPuaA>W%ck3vrs6nh z@N7h&rEZi70?j>}5ZPgDA-jYvcuo25u4HVb)Pnun<#Z_~X+XN%r3h$|rt#@`)V8fj zb1VX?OHgaV8jq7hVvX|f>fXxTalRCMb84I^*Tq>s_Mu3h%(r~uoc4^#SRge;X=o?X zSATgC`_1O)*P}CV`V)WryE}Ax7WmR`gM0A)e%9jIahbK(p=7xs2* zwKSN9^9f%=5D00AVD1Py@$T}%<#a6;!GOKt6`hT!K#G~wva+riCrcsuz0Q-Au` z=*J}GeYQ|j>`qG&pm2V$wmWp3$0^KT%RG4~rXTn@{#loLsJVo4YkYwNJ>OJsle31&!Bx4 ztyF&%Wrv36sUtVgEQ&&8#G)ccH1L2@Kk?jHoWp_G5kV~>pA>~m!8;up98-m{B2rejoG(fqc9cxmC~)!_kR$tb=01CZ&CwAh27IWP3n&;D zYpW_oW&hdUZR$8r=D5}T)ouE}H9t;XS&p;ARSx%M6Em{dv!22X2xqSM#l+u50hwd* z*Px91Ycko6H=idt>?ga?-fdywjd*{(+{yDQDz6c?zC(huM486Q<=zsSwmNouH4M0J zK`%lOBng2pkF2)Bw{a|XPpmTLQHfS;Dtb{>E}L$1+{&MyZRLD0y(Kf9CE37LsMG?` zRMttK>A4QnaYQBDM*-yz(TMw3na3=M?Mbz>mzYN$mpGzG%K(QGDpavYTcVJGNHpi{#$5ArOEvb?@VzgRGyS{turLHXuX7qEEg zE9F(|42QmdrboN2P)XUPU{m({gQRT#d|Fou*RP;ux1Zu+$LZ_??bVsws3bsr9}@s%7IGQB&&vto3Oj7 z9(Vrt&Tb+mG4^a5km$_pyHDPojGw=z>(sJB7Q|FAu%!}Fpgi@GGCAlvuEptw$&>~R zMtsQv#lrc+I(?u*GBF<~A)8MFifdiV%4B2FP>2N6XR;Lugny6{evGq?&jhfYVmy?P zXRTKY@Cp(x6?`9!@4eg67zS|T*5i}AM~wGQ;`hTljCVUHiEqOvo%on1(#(&e09wCj zoUux1nejkH2?x(Jt3?(lJL0OSZ37j8zCepAbkWZglPEh|I7TDK*H=reBl+P=rK+^X ztrr?`T~i|3H-B=in3`t3wsfqI&32%lGt~$LQ<>l}BSw)d8Z@P%sw}+}$!3a(d}Vrs zub_qZbC28xKS^Q?$8oY9aoi>fCxN0dX6H*9OQz9^gRa|i)S3}Nw?A`6Z2<0AatD8D zIlOs-r7`xXO+3;Df*+l9jDMWy08-^1T;z%(; zV{)Nw$$zPBlRw*bX!gv;U5nc=5PbKq*g`-y~tCD1mqJQNYAvIPv!j|?~p~>&FSt9ukjp72~ ztE^F2To;d9^~kkBUCg^R77M|tc9ta0{2xSZjDgQ{x2sSC?k&o-0slAood7N6spRxyl9>Pv5VR-8Sa# z;eQMj)XZYwK;B~lO^1uhHfR^F>MhUv;L;4HUQ?t%qjg%sk`0V(b%E1ZZbRx?ce@2i zl$&9fSwKIT&o~=~VT*nf8!u7Tb{cbZVCR zvT@iZyTP5O4~+E&2C7&-{UcEYy-JO$rGL>(S;@x0=!xVtHKaw&TN=zaxvx=`{+asV z*jxOaJVpHOJtdr73h-*qR}a=Vx)hX# z1LddW@`+;pE-8=W$WEMx zJlg@~PcaEll+!?!2l>9{!SX=pe;J|6qC$>F7sXS*o>&one5On?no-0}YuKWmc2Bpb zBUV-O-KlY1nz97Pnvj)68ZsK#Qx_>Mwu}%nwq283+e>5Z!0cM-{ z0a6>~6|3aBw|AH0>+#jpADutUrlX750S!=GuL;HRhY-CUPewNfvYY}AQyQ;7gy{5Y zba^+q`F#La`8^fW?s55Sa8-wU=TPcq={htr#B2$L3~9bIhKYFO;JSslo}QsEWm-zj z%&abycC_H$w5ed1;Wp82dFEPlIS@`;;kt2za{fTf6vT|j* z^TKc8)OTB~So(}8JR|QWU6SDHC4fv7-}ZPW1yV$I|B=E=R%k7iHAQKJ)Xj>HKJ%mg zplHPLnf%O5p4yJny76@;T0^w!L31(MYQ9~`f5$Y}u7~~N)f)HxT?}QWdi)&ZqTQRk z#<2{j8epuCZCpSDH1F#L>#NDw-MD^vtC*(pNE$1_Htp4^gsA!#Ru40V*M0)BOZLtJ zG^e~}n0E)(k)c)jii(?GuQg*aXc)G4-^SWl{{Xjq{Rjgqe{b73w%_|J)S{>y)R}GO zebY$_*KuZyNu0oT+8xBXhGNT&wz8y^ zdbFvag4r;uf8#QX(%DI}S`E^8{jw4AvP`l%x=rIzeBaCRte-|zHOiN9bJc17KF%g} z8AtAZa7(kn$D(Y8nDweEd6!)jEkIu0_{gt?FXAIA~XvPF!dU>65XPSiWYUS zz*Gt@%ebx|2nFM^$I2f4`6xi2MV?i4a60_^)#dzhe>~{V&jzQ{;3#-`1QEgADqlbz4HMA_}&J1(;FK=KiEKnQNMRN z8JwWfA8Bb(<~5;I@U$r7MZAo&MSLC=2;!R0&g?S3KRl$gIyw%nUvz_mn{L2nu)a^K zc$C*Ff5d?bg2+3}7QW(>*i)QWHBfzD0{|M309SYvm+7W*_CX-dlMDvIoQI`l?kqgX zH%RiF#Ync2?47%MuPmbnck#vTKhO-h%U|bt>Mp&?su-?JhCV3Eyqs(bH2IaAKtser z5n_ydrM2`ef_Wi00ih8`nZXI)v1SA>oo`aLfBbtsRRZ87`QQgQ&zF7xbFP1|n=t3v z2I=S7BC7o`le=V9pT#Q;>_-@EoV>ehf?G#v8kZ{2PmIDQ%tbl)=O#+MpuZxGUN!VAT;R4>yw=Rd3&U~qrWOI;LPfEPO4 ze}N50g~I6g;9D1<(cpIgTSjSIEp%n`y(+6yY}LyL4d4e=P^o>^%70WFpylIu1%hzv zZb_L9VQW+yMArs3fT0a+09#IhUUZFN1Hk;@gfnKz1!l651qbR62biTlfEm%vG(;EekRLRAotU=p$Da))e}9(0!;)*#^Cyd)8K6n2pIv|k<%I+@E44^B z%h)hc6y(NocajV%n6vmpoLXg>{b-pls2v|juds6?)tRk%t%ZVITNjMw>xe<+2D z667|N7)z)yO|Vbq0f^T{{czR${}dKepxz0f+OGi~f8v9S=vpB47Aq9tPh8vvoZ$qiosP zdnwyk#;a(P))%s$u)533nz(9{e+Lw5eGD;w%~nxb#Wyd_-X($p*XL%dw9+SoDq`5k zA&cutjm&e$F+_!fWkjNsXZZ1xS@y(6PcRyS$Tn%(fD6K8C_C#Q1%Q|Ue{F>s1$Co` zCjrgxyo?Lvjda2w?DFOt@S^>+q0e&>H0c<8gSY}e2^)IKH#OMR3@IAKf8iaV%VX5# zp4F!cvF||2Ll&zMokWJ{6f&~qqEn#=xY`R2gNjH8OgWYJECf-bh(JiMk^Dl{VNFUn z)aj_S%jMYyJ-YkLt+XM#eC1M72Zv zXp7rvlE&@mo~(k-V-6!9e=E2>`32{iW|=0=pXBgx#IC>~=8@ASc)*$}+%J82{o)3R z6A$wOJSoVarb!n6Ha$Nxks{sAP}A=)d#1?Bb;7^>=P$DvL10!rN8gTTv+UL15YvX3 zaf>|&ZKeO&BHu_9gMH*td@e!^pQjv&SxGsv*aMN_Tu?OV0#g9ke+*;Rs2r-u=^J3I zk!g!1KC2wXWQ)6i@>&%{73XYy#DsLXz@n09eI7h}M$~(7baX^pLHY%inr*ekl*r~w ztLiPn_`Ux4lR;l6F>PU^0)i!`bW1aOiVb>A!5?=>IYW3=1%tJOK(!7XkjIhFS0NV!J4502Joj{wuh*z; z;@D7jdKcGy_E7CnV9INNEXR;RMp&`PLUD<9Wg|B4dBh+upic1zIg~XDP61Z_4h`g#je3p55?7xepT8tZHrxrZ1 z=%~Xc@lg?#e@LJ&mClsMJ-u5}vbamqB_eBrTXkDLmfHwsNb}Cg4@>c2b(5gDM1&mo&PhMni)@GjlN!~(l#xgf43e@Src<{Ij5A837PAJ;dAGeAZb z#K_ZYsN^(!4YZskj5>r6UEXFRQL#S|O=83kD12M$Znuk&#`N)d;WL5*gDv|#M8N)n$YW-;p{^!Km%1!S2~pByaU_`4LM!i;~!=_xVDzi#-xt>$oX`z~Y1%24s`1 zd_K{xf6wnzNBTLw-zOW{EnPIyij&uY##~G;#;q{`(R6qUh`wU8*x(6=-4!?Pp^d(!sI!f>j=0ol_040J_fgb~NFXkr?F zM5OR}&{Fd#tyw5Eq<3&)hg7-5$)xfFB9fNmf9VE1OO4#liS>j=xy`BpS+yul{uPh3 z%s-Hilb~nHDu5U8l&uJOfyQEWzze3P`2E-!>j7Ti0knePt#NLyCIHahyr!NMkM9Fz zV^l|-y6rQfPm8=VQuIR6^ESxRf=Gj^%!6xpgBQqD;e;YKSp*1uAv#<4`-t5q>W21U ze@UFB)a1yBK#{L~A|#|=ZgCU>AY@c2gY>5yA5TiEDM>Kp>yz82R5BZDqbWa)()2c3 zyjR?HGh?TF41b0NaUO-?n?4kXc|NuD1GTV#d9s@FK+rs|){q=FC(Ds1-Ue@-)?|hW zzN(?`)d;2A4U(9UmxmC`5m%E#_;Hi7f8ar;MVKSjUKs3=4lR(;bA3@+U*>dWjscKy zPH+LCEGpHsL!2$43OprffD5EVPsd2`Ng%@-!oSt_SBx4e>5UA%ncpJI-J|%PBzW0e zQ6iX0FtQJHZYhC`_T}6)dU&`h^EG-p65g`mHL2Xvwiz)a&Kwz-$dg%rJlw~ye;Bo9 zIhEWn>ruD7xBSNjDJYtfg%M;0rwGC7t%Rq#&$*Gyy$ zDN(*!Y;}xPQ`m$2#v;JWcp!rvfA7ayXHYG*+!q4TRVt1(S9GlA=jNDs2eYJ_N6ZJ{ zEh8kA$7-j}unOnU#xCE2R_O(woW_SJ4TZ$gH4yyS zR)+mVCgf4PABh9p!Y&g?7g>$zOSt>gIC<~m2Qq6|H+&O>`^UtFD^zyVfA+DK@Uyno zT;sOwl%M+f3e;XDa`TNJGq_pXSuMDmUr9PU>N1^YD`|`s*-pniT#2Tmsckr67b+Ud zOel;kBfKpTNX*eff;~`56jfWThUqsk+#y!a?-8jD3^eCRt?uxT_(%Fl3Kqguk}VtF z5+Ro>VPolO*U<52n@Qb8e=u#KRQJ?1$m6cEXroToR0M}3Zoeg73I8RSt*i3Zp6c_M zSi@tLfu|HFm!2~?Zz~ZEo(FgX+8%ZZl%YVxaPbL*L!o*_ZgT2oOiC)>Xz^G)W^~+@ z0@eGZAWgizOKQ3WLz9(u=}=8V)jqYvv0YgoX65#DzKmqZji~=Nf4ShBUv&rDLba_8E%h~ug z?YC%1RjHH%99m#|ij-L&k1Kcxi3iLf#%`$Ze6_+xpc;iSw%E3hEftl3_ZT+}+TaL> zFTbY-RqiwprCf_xe~9)I965srxBI6=F(hlvaF$U?SL{46reAR7)}}%4R*9SF&a77I zh0SWTihD&7XG@-=B;o;~v*lhW$`_b?Ce3HdAbAw zciBB+0e5Z<>*iqJ;cLu1XF zw=(O|=01?_@i$960pBe{&0EQz*zi9!E$Um9bSE;TW7Du z8fIghspbx@##}!2wX;9ZKVCHg)1fh}+0L0ae`cmRq=vB~T9&*L+)>;{go)A;{Rv9&$e<)TG#1V{TA1Kd{yGm-s?i z5hCk^;*qk4L_188LKW$#w;H-vF1+n~+T6k|aYsAudfF~pnQ3X_qgI=5&EdK?-8R$r ze=BMsK>sM(cUN`PB080$XmrebCnv5g12Taw*y#(oj6gh#w*_KbCKj72xlvsWI~CX6 zP-pH;uof1Z+mj6_XMEf+8drScL`sSjeHnob>ho7{Eq@$b8ZvzD0$Nica9=bl+|D6w zuUmK2sXKYR0<-@m+R0-BKJB6@#)I>Ve>Y%oPQ%duk2Lj2^GgR!A`#JKLP0V$gi`Ib zHerny?O%&&a?-aqiKHLE2s-q&PhS3A!PG9Xkj*`Xj4q*d5B`CTg_92TU76pL7Y1g7 zkBgWb?$dcPxyv`{G7IbAF2Y{(6YriMa{~olEyJ`_b!)>CT+f|R^RJ_^KIq#7e*i-X zYHjo0l(v2*dVto?jHRiq*3EW`v76YyJe|a!RscCuZ=yx)Yj24FkI)j!IlJb}@yFf~ z)VK%8kBptlZn+nTnb;k70YT2z_S%zU&`xy<-r?1}yu8BREUZ~u>?!z+JP36tNcUTL zejcZ-b*SF_)+9_V_zB<#x{?jRe{6{ffZ{vq9TlRBE$Ux-f*hwVh%SMH7j`FtI5yo&g=JjE zEA$V|-2Y`_DCfU72(58iyn}ea8#m;nJrAA4D*tYD>Nv#6Jl+0P5Izl&G~pvO5DEWu zQ}@#sqb@%@-=*dNYSAkRe`bSh5fxRuq{qo1R;s@u3BL+4*vX~#(81s*>_=Ia^Tm@6-)Jb`G8->(dzfK2ESx zG>U%2cD8^J=W%_PFa0nh6!u{LYy*o=AxIkfq!&XpNrcz9eFpuTDcoX)TGIcr#7Az` z4-H_Pz%9Wkjavf$e@|usu$&necDsnXi9S9(yJ7IeDVBhZ=Nibj@JR5%U+S}tKNV(O zKm^a!7t;?9&o54fr^CT`etGr!Y}m(^ogKL%?R%^0+*Dl)lSR`0!@Op%v^gN0CBQnXzYr^8Y2e+<`OC0UeiS$RC@om`C0 z{=oH-6R^y)^no|gz!K_uqj@qHpmxX$v--x@UxIHP$u%>4SC2g=`I!BNQ?N21Ptxv? zG)FF2x0`Z@t$2xETM4m~Rm5{B_(BJi8mr@vHJlZ5Z@ce0_heBD(jzhuTcJuF(gQuu zw#lV*Z4mXof4svoWfU`y2dE^+JmtuF$x?Pg*y7_)E3B|*3%mh&9;Ml4jgMC>EqA&F*+#j3 zh?JXf`U?$PlTNSB4pP$YvqRkr1d;cQUq}THri;KMe;aPwERFKmBBHW=+vXq}eKd9} zL{(4>_)mol%@-BeM{l|3fFJX*HT8K#%(RZX*TN4`Nv^Jdb9nAs+1ggL?`w0{#ECJ_ zJ#OtPIxZ&*V^rv_-3>wl+hRz-jY=W13rla~IKFDpHupNU#_zG_cKGEHl~h|1a~7|+<;BwV{DC|o zf9C=72>;c{BOH+Oh}Sj4{*Tl9@^DDOZdZ^TV%;z7x^32R*{|z{U;A2L=q_LI0$=FX zUht}3;C^1{QeMwZypCHLp_>@tI}pM7msG~{&wn+}KL@1qzwP|C2#wSOhuy)EJfdZb z@CYvs6|eL9PSHO_)!|7mhi5v}0f3ImJs{24%Vuy3NTC(8zd0p47d!THHcr3rS z>z!O&y*?Yvd*kuNTdQUtU)!W37aoQd7%|F~0e2MIR~brr6JX3`b1iznhaRj+eMx3S zO9@DKFuso;6d+}M3T%FV%Gd(;i)RyWrdFzv!SM?HG_N*g+y->;F{$^D1<%@uf3g^F z|2SDWAczpQ7zTqwB-_MxQXYuj%K-yUmDttlidmHnno2R=f_cLw?9P-(-#dzws!^YYL`Uf1*12rk%dL z4)>H^$r_H)txJ72*EE&ob@)oFLEc4^h#H#n8p-D$!@=1}!}u&k3RDbL+)Ul-AY!P% zs{Cw#hva29(Kw`dF+#7$gWm5BgdkmP^xSy7- zbvmCi7sj?)$5Yb37)^(xf2)Cy%8;_hb$b&xSNauy^W125ppg$Cvw$(g*)Zm>x+??L z0@r=h8xMQPb!1zn4Vh?RL0ZU&Wl(U(rcXEU};QNv2p>-AnwGJ?VZ&;ot{b--W z3uK65tPjW+0HwuUe@+#RU4|4qy&VWH5$ktWNt)+{UE*P80`O~^-$tp;aI~<@H^o&2 zurifHEUqh}=~e5ef}B%fj7p$usi~1RE9`Pbvx3-hpB-rl{LKxZIQ8<1M&bkYV=9HJu-=NG#tIVj@zY-yWSoPcOv9^!hNae@ZJ)86mNwkn%EI$owX= z%qJ9ZLkc6n0Awb-IC3$EL4-&-igV`>k(t2e!d>brJEb<+SQ z2*{#4u#D+HcbG_MZ?X>$Lz zsbn};B4C!!1HB#4pEP^)c!b^_+_Ih3Zynso6u9NpOI-GdU!YGI-l%HX+<1D*)Ux z>Q=tiZAV)xUaJKqF`#hKDvg*h(*)RL3Nnrcc6v4HPlp#HgNOB|&U%xH%^n(z%qnri z3l<9!1b=$;U$=Zi30ES2lHY5>Fc5&>^H-c8+Oj>&J&kr{h!d2_R#Y~Iip2J+VKoU! zx>=_G``YT9Key!}kjv%!?vC8v$(bZ1#2}^$!O}*tz>G~QQF}GpC7jMtOBx`wd4z$% zaOlsZPnAYB?BF8X`{E6GbDqT12;~xz=wFi8dF&ls5;0C=$i!NILlEIQb-yEtyPW7C@Bnz%apKiYBu?qte;QvcZA88$K-SHOo!3345~i5-50>c- zwIR64hGI@e8vh!1=$0;?pm|G{Pf?)5w+pRUCu|{`$ zwK{C3WHGIAOB>`cxPaQohDrsF!-K04c%BDUs|w2{oW0M6^wMhgn?1kYXy&Msn(MXZ zD7s^@?e8J4$QQS`W(hJDe;YTl=l}T>oH?^c_Fn03zaPoX%*qm-Xh)Vj5|vDjozXOtX-g~p3eY<`Ipr0hsjc!TISVsh#-FQ`@s!%8ts{idTcOUP*_+mD`O_q1# zn`Ce@`;gqMlJ{?4f4qA=UM!QvTmJg$i!bh%wa!-`v(fzW)9t(Y^ws$8a`JzZ!Pf&f4!$a9P0LT_v(fn7G!eOM#||sm zewwf5`AmW3Rq{+`fBzUyC-1pcswjvmc@i3qEJx+}`{cv;e!4nDuhJX`t`i2;Uf<7> zU+-`|B2X{xr+_cbTkZM}KRBZor zqT8c64S1SmyjYAsJ^SPE{N*3_2Y&=$bTPUfeS2~KJzt)je;u7(9S;jXuFubo#GT=H zho^jXG5p)r$;GhnLuK6C-{S|T=ii(h9iCpFUlf1;y?o>F?3i!7zBoA>@#POE!&7nh z`26a{>G1mSLUj}muU}rAze0mwiw0kxUR_?Ny^-B~b#hj^adn#id3^F+{^wB&!QrTo z|NJ=rGwo;of9Lr{{@34&KQ9X{T^63bKL5Vh?&0b1@@Sad+xrV3+WT^^n1g@4I6prf z9-b+@%HINwd;i6S|F8sI{n(%s9~heyN9Z%o~QS7(>Q?D5|Jlr+vfu=hs% zJ{t<2e>gflKa-65_Y+ac$xCtP^m3TL7FTD-^5*H;)vFgnK~Tr}9}GwVsFV)Q4qu5% z(jO;>DeR&qG&W6|Dj$WP0HjfTpU#4V5H1_?sC!--KKye^pKbI?C*YN1u zbBS&KPRpNWu;hNdl)RDNR@dpp@bKu{{DbUwe>$$GhZk98h2Mvl0{-t$MzX-G!%?oT z{F8LdhO*L^hgYX^eACwcs^A=@vPtCn=6odJd3kkqG&(sy6Ti-KSdp@Jbaf$ak1l?Y z?Wv|;o}8szBko^aDp7tp8Xg{>i?ROZ^!$b5mvo{z5fpv+BE|OM(I{7y63gGEye5B~ ze~(ha9ZHd%(!H$Uf*LuK&8LKsqh!gq>T>w%^+@FW_VARTeDyjVzY9sthnJTU&O=4c zXDP?OROB*DsZCP+hz3FAdiDBr_$rk$mjzBcPbJ&oND{-@)#>Tw;mcwD)6Id(f!{XagrP`56J zuMcym7@nS#$E{Ppkr_4beA`%im+d|uIc3Yw%+daQj??w)kw2XqmrTVZ<3FXnP7 z@zVS0g`a{%rR?mD>uW9{}g&>2PyVk zbcF`s@w@Xm`JAN5{vajCR6>xTe@HnwWuyH;%HlRL6Y+cc)Fw$nEKk&%KDMb`n#W1= zI8;HJ$4T=zX&xudsB} z=1`hKzXC%|Aw3>e;z+|!%2J%h(CLy>haC*DAWD;GqVQGCxQu! zW|T1`WM~rPyFEf{aNRIh9rvuHceQZ4*}~<6Qvsti{)5HTKDXX>^TqoJ^cCHV7Vu&* zBZx}tvh=xSlLfJqQpQrnL_y#X;ph7U0*$&}^R$97h8ahOM904QnG5<;IB z<|=G{0WpC4J#S?ARw1<_H9Hpx#6L6~04K zi;ifq|HGsk5K3zbdiD9IWu|QehfsQ-B~F+gAcSRMG)+>I zDF4l@>pZ1c1@q5$82C^V5tDvY=ggKwfl6o*NItqU?|`u;RpJ46YBjt#*0GD0N}O-( z0-88zN~Xd?lF+Br&~P-+T(RKo!`u6qAw&-bM)hrE^_!x@mj-w6W@Oq4G|)Y^g)2m; zgjkHB;rbS<-0Plifnmt;Ij~Vdf_sS^QwWM7Wd2nIj%s)K-yy=IsqPkTsY3c)JhPZ+ zNg1@4n57_%e1>U25NLGoQsB1D0K{)hzE1bi0Zu{HLlb5F9izWjJ2VEpP!AjFl*(&W z(KQ8Q_H#0=_Q5Yw2}eUAkx2#Zs#AM}JVC6w@V0C*S$b1N1fWV6mnU zlA%-~=iqcuHd$O(wT^ctCnE9RRc)KigGj?3yiaBXxZ@b+D612xL(;%-5OhmGO-KT7 z;^>@i&bkl=k`>CH>}<+9p88Bd3oj``YBg!4B~!6k8{vd=F={sl6rjmmbQeU8i>cti z4e0nWa*0CG@Nyi`kPV@EfWG9tW`&bDuox-S%A%zJ98E*yhN}Rg`){LaC-5!7^fnq# zzdGVupnanrPEb%FmKeKfcMo$=pmgF}WFWA>Vs3shW(b)!-bgqZ;ss(eYF8ZW5g!L* zeDr%5bvTCSKfCRSwz+iBGl0Cx&F9JKF zTC|2uB%Pua-tT8OUAP*27#N{4G3olOHlmOZd+s98Z%hT%Y*aLa*+sDmbnOv*JgxV4NcRi$z$%#?W1eKO<)Q) zV5geGMa7EEMdT!=;&Ooa6wBOEEHp#nth*8d^evih=&cEs0Ff=(oT%GxChZBNUhLW~ z9BsvTe_7Sn*(Uz@kB(9>*#CZny(nls(s~t|!TxcFa`?{O&=e(HdF>{>=cCs070Jqm_yVt=ui|Z$_@# zJD7?(u=w%FceQ?@NVw5VMeR<<8(90K#}KCh8JkLbBZ2p6kvgGk(4VALJ#y<}|h z(*#?MA<*;LK1i@qNq zooPanF+be{a}^z*D?tDvJ!M8@`@^)GR)m_(iA}*2@3&q6UWG)YtwyG`@1e<$si{cX zw1AuZfih$>1kMGwjPUrlqDcK(!Y(xGCJi;rU?9EhrR)cb;Z2=Mf4eCpR606Cn zNyaSd1g@s8VFag;hjQ$w$jn;FeA&IA@hX z!2r6hMMYY&``*PcA^KX2BJs#m>?#O2@XyI3R>OMSv=|Ch2O-t%F`HntC%THqDv<xBzM^6y!x#L6f+Hl{UqRU z?w9Na%CEN6B&J?aV=1t{9XSn=Jcg&mcsLjZs!>nTyfpYBW$11~X|5R4a1A0HDgShR zI4#d`0i%W>8U>h5xBVxBN19>;4<{EtJ~jQqa%8G|5lCpK0~5Aku_1IMq&fKE+0um0 zcC#=<6Q3JsyRIWEINDwp25dOYulc)obtoBUwzQVFVvLb|KGr|AF!;W)f%>71YAYzJ zaoaOg++n8iIr?VKffC{P?d6zT7sa8z)CVcu2O5>UmU5|n#Rd|xetPq)Z)Zj^7uhYpj#Oz6y_KuqgDsTajl==%PB*({ zzM@i!)Cg50ir9L^=_c>gr6>DZV8i0B4G__VmrCbpFo{1=ar^N+RizfLHOSzCl#2YA z{%L6asB)DIF33$8stGe?V=cXA5X~m%)DUXcJ(EG)XKk;smMWLUYsTB_Q5M-2Iy4lFc1T3oIG8ifHNn z)l?VnX9RL49XS3wP(TfO)|cQ(KlP?fj5UCZt;A!K^)fo8lm^3zP$KcZ%@x;X_P;>f z>A#r)1H9$mE(1V)Wn#m|omf1DUpF)0C!9;ed-)R;H| zv~CRjW)yHPM$9GR7*)KI`8}bxir+ahuCUed%DUqlH-pGY0G+3nsanwRC{rN_FS))i zMQ!^q?P8m@D+8R-&(^l#BXv}dq1G!_lH-_lp`4f9F6iK2aQwMC3t#hoifmfAKK#lR`Zmqc!@T$jIA}EYn1=or}CnvHr>)UU-W}G6qT^W!@w{70hjXMeOPun+dn~h)`OrAj}`5B2Mf#cvqXZ! z7W9ZWDOcIVe(blYy0>08P4dtUO0q+G2ml7@0Ga4n`sv{6pV1bPQyqZHq0wY~*%!(s zF3@!jc?v(7q{n!s42|1F?j64s(RavhAm8nam~$H|c?JX}d0Br~!RgLQT<|)}gUC!E zLzj~mpfff6&Y7VBis~Njzgt%f!TLL65NsWh z)D8!-M=RYSgHC<;z%)9<&55+N$&I)=fWZx=30#QdjA0s0lP zEzH18STU8#A%sGt!_S@g*#c9hLx8Jwvlk2+RF1WqQ1M^$RU=Fv*Q=>wgGEeh&skR^ zs1UazkvI0TEx|5rAxj^D$oE1RHSsuy-{Cc<0XTpFVJh|08|pnlwiV*3Yp$4{zVUD3 zoxx`GGx6F%Ms2FA46ZI5{IMU5pnm2|fH9T8t%bku3ZsuvQvj6MQ5u%HG}oca2g8I* zrKA+iP$s3#g_AX1PQv6cB1KF??n!btA>bd@N9rG42x4)ZW|u!r#L_#%3^}|aw(YcNOoCU%&NnpZrqQo<7g&oXLDh0~;!ooT1KB5eS1;Gp_K)n;cYw ztN#9$-B*$~M7u?y0bv5R#Cm;)O}+&q!Sm#7MMHm5YAMyW!_VStYg&rs&r?mR*ZTs4 z+m;?bJvf5=Bqu^D5MW)0LjL6qpo~IQikiqc4Ns6q)_6!o^&&&!gLdazXdX`=d11WB zkUK~~h-*D*@bd=m(pRiYThvVdMC;$P5m~mY)a#P;A)4FCC6k-*U3wU`(qUVHF_n#aX{%kL&a%e5^mif^3HGDX|bgkt>e zwPs7a5TGRZL$*VJ*0`bERoy;7&>d#EFc_$iE-$5x885?P1(d=;L|-rEMC-YUHoPh~M{$qUc-wLmOKGPq}}=_Lz?ZI&Njk;I|Xayo=!X zGvSpV6HVL8s@<3b(TI%?k`lR8?xVkgR11`KA)RG%Wkug7R2Wctl3%)jPrGdje#J+J zB=REfqP}i5K0FG8Ao3{Y@5?$lgAFPO6nAp@v{IEyNMIY?rtCJjKmJ|^J2>Na#ycd| z7@<1M!LJ-UYINr6az@t<%cV4~)Ys5CdWWtUr}PQ!Tv;O8M6NRD*%D`Pof;I=c`3+c z%EGqEqc9>k=H}MNog;1oz6y2Vf!}u8`M6IwSk~9bi&?Lrp>? z>GbEZ7^axx(?9Y>tPYE<;gB14u4O=XE+TzC(-MS@p1*2Nm$A+Tq-uKlc2JA09onGi z(Sk^VPz`=kzX_K}LPNt=S446+Ip_(75pek1;t~35+Gqv_2ndK&A=X2xNGQ_?L2{Hc zD4P+1z934V;F%ETT?j`B&yfXf2Hu$T3n6vaa`bGGgn)wL5hbHk45O5TdBt8a_1}b; z{xoA&fTlIqP(vL6bjs=QJvOE~C?BM^nMZIB3^y=AH;As1{bEES>$Eub_J_#)HiJS% z|Iu;v>GoP$5T4qYh(6^2NPNZ1(C&#`4Izl}jO6k3 z@SYE&lp|aXQEDjHQYIjitaFwS8{zhSbCuMWS)U%$ZC*-+)2UE#6^oWYLEg8dk6?3i>xr35RWU%j>Dg4yErs%~(JbgW*0<$$=YXf_%(qeB<1Q zmsQpP@#eb*%vIyhO6|b(iIBSC!g0Oxwb>L{<+kdvs?*?Lh|^F;_c`oAy8iJoP#OV!r0*b8+#}6 zW!MwH{|t{RCF`<^2_|yQzFf}NdU*Unp)u5T3*B!7;9Wx!Br;76)T0URcAIW_EtAVc zkV$RTB0=p4q>#OXL&T!lg>*1}-?0I~gEC(F!SuVvyXzF_8|sfo)560G@9I5MAC3qA z;A8!P9xmwMue0V!MH_uJbqDeT`(`429L`9l$=9$LUXK}6Xp^I@2E(IGF*N{56hR;! zxu|6eXhaJll2G>$O8VHo*-OxX*@_jerSXGCZXoD-{r(p>ngbO9G8Jk|GHA$pMm0lB zI`a;xZ=G~aN2H{SYEH-YFu!zay~+POBGx(lIsC4Kh+kZ(CsYT$tr(sfhD-ZbgY3ss{(W&ofC$%F*6!5+ z@FDBC&8a@fesKuORmgn4d)D@K;^`M>0*iwv(wYN5CyRwe>;oNr1?K}NWRbN=>&k1n z>t0FT9XPNvg6SW>>6InSnMdJMXE+h^sgc=w(76C7R6~ex-(Bl0pjM;^IROl$V};@j z$jQ2^Z{+V1G{`h)5BZkAuS5JnzcyS2+RHw>%NZ&SBj|iM4n*5>f_uUs$C$+Z6gTnm zrFja|IUx+yl=N=BvisbF9FZ{)RlYl--+XueUhTQ1??&?J7*wG8K_F+XEfjqVdOFib@!7PyT4cJWir^BltNN4$@m< z0s~2O-8-La%$2|${JId4Bq@%yO{hq5yHSc-6f)@93+1DZ#^3s$6pb*AKk|2utnU0f z$Ht3Sw0hNg5|XI4%M86z3;BXQfQY0?mFy&p8RYnqj3L5?6 z*$5$}9Ud*8pwR>+ySYT}7K|9Rv(IY4G**P5Z5whz=!jbzmw$GAV8gAgb3G1(P<;-V{1q!MVSY&}v!W0Ajz9NElf}sq5*YG_2xrnE(D#p4Mtp?ks{`M{{rr1w|%wDWFxm`O88K zVB?-LX>j1BFBzuo7ZsDr0q=!F6agWYLEw{)P*2-e&EIXlq$YZ=nG}|tS1m{IP$Mqkl!J?#098;#jb2G@sty$8!66cZ z)%y`#XW{W}k(FbX>XQaH2hP1X(%k>u zzr{f1s-H<{<1EAyOryzguZYCEE6g#beMSNwxp1WVJm{w!2ca}acwPY0dhg$;cT6E> zBQA&~ZA5TK>ha?3#~Ne7r=A+>(5gZ&&>S%#3nea5dp45ei+Q6p=ij2$n0DVn=?*aRd_#i$jv+L+g}IpA3^#EK^r*9e2$%jmJnU1l@hLX z{h?3v7=-BxZNNM2(%;G3hTph^W>$o3eBg$_kWaNRMs=-U3?1LKFGh%}clEItp}u$D zU*%v+@&lNsK#fdBz5_lo zcnKT~RQNgc2Sibfmev)NGL=fE_rE2h9tyK02fSsW{4e7LQ(k_B@UnOX@){YA^uOdR zG$`sxvW-Habd)2KKRW})s&quX71YUn$+sD;{iPViFCr8)&nhg=k#44KZ4F6w7@MpU z6v*SGc336p_t4T|RCfOMrNBZL3hmg)R+C-T22t;;^TO4AdxfVqPGxE5ZG67Yx$b3x zcphKX-~;|q=NayX)k<8k(39;bGj*Bf!PSvPR1PX8#c}larAYoPE3B=osi?D}{_Z%_ zNHO!GiklO;?ous9OR==0nL-4Xs@x2;dh`tuJ`Uu`ynbD#?IZ&gM!u>U{Gri*CZa*^$YxKGb1DY6|j>mhUHcT6@TY1C5Pppk^c zQ*`aW%zaP_x1`1C>iD%zkGH#dTot#MdmpS3sdKT1W(@486O905hc0bC2br3+@-_PY zz$nc^Ui!L#!Ly>1^UwzMQCWc^zPG6H0x-byTe5vESk-cLVw-gGSP$P?g{G=86?6RC z*T~-8Dm^;Fb5$fwG2R{cdnKQ`P1rPb$u2ML;|s1`UhKSYZ*P{JO+Mrc?;eZi2ZwLA zCL@d*T`qi#5jsAc)fVgc>C}%C7H{`&b&hoqM)w|CukW%S2x_@gR1Tu3Uv}010(K zN&8I3q^zc!dF=fzxIA7+=F=!g1k}s=_txL3HO(Ak4sUY?2@|egM~$MZsONra(kIN< zImy~T*c~)A4cj!VX$v#eJ?pNl(LS3xG`Hxs^JZ*HGB<0I?W#KU?a#hyR%oYB7a>gF zy}Pv7iI6!Ay@XbA-kSC3Po~M3Tgql=SxYForRC2kKE7hu2yP+-`LHA31M327uX{6} zccwgmt*xNDo7JX}m*?NrfW}DMb)m~Qo5zVMw@WD|KG`leJh_gtiUa=_^nSrvR`LG@ zAMCZi4v(wdvk|=xf#VYQ?C7uN{{_7A2}nK5Z$38Tp8(^{5=NRghzFwPp$^5|^O*xd= zLYJ$Pg7SHf=Z8(jQ?CRE6Rz|oHQNBKRO+wRHlRu8c!cxSQ(og|hFECl2Hl1)yPnLz z8 zMitcVvCD__jqeqcCYe{3VPzQC>dEH**vaPM7&DqlVK^0@rP6IicHbBGJ_WFr^|#zJ zszj=sg;{&ZSMBBOd_eZIWyK6&b!~0AxJjI*Yi(xFOj=9V9B$;&kSg(iHe>4ST#b~i z`a$jyMV0sdE1#9T-T_xn{)!Gsj-@bYBoDT0+85>OkB%ymat~Mg$VD%)r;jo3lJf%l zgWpN1?N&{>T)H=Rc4hQIlRJ=L*@%@x(MbX4dG$9ok5YGn?J9C&Vr=NU(PD;Z08Kx3 zmeF+R;CyiLpA45I)eoD?!{IZZziUY?@B1kLFDG|L2VMskCl^02e_7RS$PQPT(4-Vy z(zO+vDoan9em2Fz!A-gh#fR|rdw>7-^wmGO!VJx!5ebI);}z_cb5kJ1msx_913fqP zSHoN~0`+H#ezdO#ZyO(Xr-!S@N?<*Rjaeg)>=L!e4a|rh;UUR_l{l0*8JbqiLEXMo zip2|Y^uvjCTA03G7Jii6#H18Ly}ITI0$x^*ZZzVgSP>MLf^xNtr1lCAY92 z(Z#OE_=>-kWnnx^Gb(h&iC3?1in0UvA{8uy2Jupj&E!RZtrxDM*;KHVH6Ob8BRLBq(HcKQ~UQ zs0*3OuL$>3Ybg(Q=cwmgoM6zj6*9Qi58fX);)BdjAKW?+hQcqhFX;4o#3yugmkum^ zZ8^moT#K#aEr^tVG3nen?l|!(vZmHIMUJtMN^T(801xOB#&b6M;gm@&3Uu{+8g3N!e z$fqg$jJh}WEYnC@XOIm{YI(d(daJLDXSXEGR`+_(_*0@yv$a~VAaGP5eJTt4Wj4jT zpw(+H(vz-6v(x$e%U*pS-}~J)IQ`DBd~Eg}A^9!&v$C>pGWN>Bi&^-Pyh=Fps@o%kffPdgt6k!0K-Ud4w`4Dy#kB~BL=cCph zNU*c(6(X1o!PoKy=3tts@?+K!y(K$7Inqu%ylgkE9-)o2H8C}8?HRhP+=Cm&t08J=1=7AbY@?1YAHcs~kiO!0wtGL_W z#*)*=8p#D6)`|wNpufB-b#Gcq4Ml*HjK-L&-7ML zs|f|TmMl6X)E*<2cLS!oDX!ROpTEAij@?HBwz99)>1#aHSWuv0Xjr`&F{>1t+5SfY zfI3&2EM?u^>U7zxI1ifb>7bI8d3^9YDYlH6<;1cq^JkZMfVjzS^TN+xRFRH(^(|wk%{MMQ}4zfpvq^aVg*sVB; z>Ik&|yU|ut{r1ZFe7EiaiXNM#_^{#A0!Z*3RRosewE7b)->xhZ;b;iU3~Hrf{BlE| zONh-_h+}CUV|0hXxY^HY-e_wLzm7Y)w}{eg1O7$AFiqepA#c zU*VJkDN)+;8O3IeiTdvXlp)?}X=OqkVhrKW9wHVKYot01MZ87n3Gus$pYS_FY~9yx zGi3aCr zHL}iRmc2xaAxj(t#>J%!Csq72^G>uPSMyZ%7PeFgdY6Zbfr#sh5LF^2GawtXF-9!s zf`x}{&b!FkI~NS)TP!9vV!v}KyDU7atQqeh(Lcjk|KIy$RlEwz8!Z^-wSwDzG-WR(3Im>BHCOP^n29WKGI^b+>@)Y&5C&-;q11DW3OAHeAc&!a#*PE-`WSbh0?|9DmT{gE)>4^27X!z^Pf{zXYM@jr&LYE$m?ap zGgKn!>qOHd#)uV}t-yV}nCWF_CXrBbK*fojuKvUNDj?3u`cSa?BkWaRjI3Pytbq&R zS-u+M@B&|?ao%Q0Rt7j7dPOR!o_ouOGFh9J30C(u9%vMcGIpo85U%5$Vu^sy@njNT zH=R3#xOB{MW!9J}{8Gwm<3eSJfqlATTvRXb{x#NsSs;(>4COXFa<-&S*8O7WA%Xo4 zv;C2YvHg)<7%c|6W9!mSS_wX z$L{<0SE%ecJ_GomfD0tjlDEe%!7nU>Ymnm(OaAj`o}_v*VXnR<%=u>~eL_Wz-CQ2I ztPt8@N+W9iP_cMe?Tjy?C?}MmtyOrr=uv91qzS%9z9mZ9hh~khoIj{W;B$k~#tDfO ztl>qAW$Kcx4du;oO;&k*PJwo`ByuA4K<%q3SmQ6>3#xvZI+5P+xZ!JGNd+Ol# z{Qla3h38!5j^*id|K*`nGAH2`-ux#n;&%GVf`x~^(bz%GOP8B+6F)knNbTz{m4c5A z>ac9S=L2BH=Uu8)gqnY3#I?#1$%h}pLppWl~U6a#Nv7FRE5I0wgd{aKBVh0%;3h{cSnvNy@2Gun&Ql8uLJD>Y~E^M6jy7%nJh=OG{(Z0gvUIsR5%x!&-lRd`rdhl*<1OPmU% z4Y@y<4$}?xewG}|Y>IxDYBvuh zv|GR11Z#(f$5J{H-GqXEc}tYz2iNlEWH9(I;TJcb^$t0<#m6>bB+#bg;eCo$3Utx& zEh-1u$<@)$mMD?MEr&}nnYrh$5r}&Oti|HR%-7hN5Nb|4t=C4(zWmLey!e}Bgom?_ z;T=8=akPwll51-&+l?HyZ)B|Cfq`RIxk#A&tWH0MI$nuG5$AR*h|sfy(}m|O7T7qd z*P%!_CEzvrkzEZ^H^0Rhq(7J(rrX5-yLT#}l;7j}#BS<;zApYz_$v$a6tb-wfW0}e z($c4Fvo6i=hrOhfM28A(T~!vvyrk>fko${oDVN?~u_sq76{vh5+ihtQay+O$KhJmA zaesd>L-~xPrTDVwY$h%LOfLc&tMn!7Q%3e)aNTb>(N1l|mGjB-ks7(FkKydCie1@Q z6_PrBc{3OJDCn@t9%0fZ75&c}_{Cr5D*cljugXV0$U^IIA33pswPM**OWJy6PK&Zm z6WTuAvpsc_JR)g;IO9B;DzR)@uz8%)kwt6P%X9{Vzl0jfuPA<%x*)gD6N>5kZ$a<> z{>-gjv25HG{zj@?8dqbtHcTDwHU(muI!Sbz+&g~g?arV3CMXP3ZL@d+d3aJDQ2{20 zdiNV-Qf$BbWl0imUN~3*8@dM;(CX!=@w9_pY?M->R zY;m?c>dbXNn|BKvX^}_)p+L}>=rpPuO40N$PKMxIDh7vFmoiEvAh?EErlS0cU7|A! z-od=c8YVfDUlXFVowMuGV2!*k^7+8a=?X@BJ7fj{n5_NRE=9vf0_#KIQQ; znP$D+xK$7!Diq@$gxVIM_Tu^F#fwx!xWU2_&Z#1AsJ%vXBLNpavzt**9n}CMd_yK0 zE|{CJV6;SZB3XgHK!hdkOt(ZNAQCY!2Ep4Sk4K-9kYgsVuZAV2vP7pbZWg#6Fn`91 z!KuLzkEFHGI2dVn#%H1dvq(hy-znvHSVINJ-asSWUz5(mIe1dxy`k&3i}TatcMR|= z5UCsff`eOWVZ(7H5kTiAowV?=?qw8~f^Z=UDD|H6THjG=DNGVKTMy*pOd3f6f6XbG>oZhr+GNzz%p%oa3AVRg`#@qPIR=jUFU)}H-Y3y$nwnu0$*IBU{8-g+kKx9;zhe4v*# zW`}c8=+^9Uqa{*N8c-uqpL=8rdxSkut{CW;$#Y@gl8f0s&?-pi%E+bQq$gvx+fSK( zc6e*aoP8b;Z;ZuIjB%kmWyKr##098!$sh8|+6~NRVO=36W-_m}GHu~gahi6y3uUpx z#;KTIuWNRGc>`#{J=!V!fJJB%rp#du_;J57pP z2P%kWT&>l>m^BQdn5cuquW54peI-OoB&`fu#CYHwJDy&Jg6$@Ayoph_GZssvYP9A% z%iCZ`q4aym`;q+sckX_D*h~|_g$ukp>>d4l);6$q2{EQi&2#K<`E4odg!?~E4nZlbn&chD0>b7F{g`@3o&;Xp-X&EAEmHK#I{Wj@0p@T1$sXL-)xA*2Ldol z!;Ra;KZnvGF3W>$W$$3M2A;&(O){F`RC7yVh-hnVdvn1}&mM_Z$O_$gggDOMDdtZ& zScnN8pOb}}qq0>DG6$Vfd@llR5fqg-BdgZe* z-(Nbvjs#*rX+zPRw;TnJ1=2vN4lh6Coo_N%Y>&{o4CUY%l zD3GYRH|ffV!rNsP51ivnNc_I9DGPiT{J!uKC5=rAjJ9KH86o%|Y{9(>C2;@idj0GckehiM5J? z@2pXEH!!mFpCL%qxX@$4!Jvj7ZQ!qe;9^vPldX&*;Legad!n?2xJ zH&^bk*5-rb%H5C&qpR))7P&V@~w zH8ob%Thrqz(poY8lD~;^!|J9luhEqW?EJdXC6Oz^MJ<8hGm)bA1Du1IpFvfneHIxV zazNG7h>|7rNPFa5z@BzdmPKKeoZaOg*iKf>vcyf5Pk3A;u{jUgMvD^dGv?{sw~xX# z0TTucx=tlD`@dY(qu}fQ_dB%9X00Vyx`f@YlH6f$EUHj&LC14vHGnj1(#(P2||6XE?%>ynvX_{h$?XPBHf+xPz6@O;s0icyo z{+LzkGH1xTo~IY&$?uFL?N9zOp`>zZ`G%iW6<7V%SoVgD{-(yOrLwuKs#STQCLF!Q zBp2bnP8n=w=FD*1imMbd&z82Dcc8}}9nQ~Gq>-wRdjv3R_CM5{M5(UpC)4aO=vj62 z>ygE~iCX6DyRD`-+3)fC#d9w*JOE1eh`z5U`xn1@n|VA%hvL&QXUs01uF_R%>-_yy z&mFZY5>hwr(Xc~efSnLp%ZDH`C6HhBZ*J!>w3RWVVyN)5Yn=79hB`D9`FRh2pTnN@ zQh>eYH;HxgI(tbTke~YHpYyPo=^ZbvJimFvA73Wiw^MoKVYf_cTb`f7PJlFfEIh5) zwX$pZYZ<)?XdcB%=SalPtGoP`qBKhV`@Do`+B!zJ5r{cT#qtG!Ir zcp$_`;pzHKER^hSeg*o`*-A|wjD)RHQGMSo>Y z%UxPaRLN==pXxGD&IBX3rbCY-0{L}8`PIgTRRt(e2W^3e*zd)HnTr@vynBdcf*iA7 zfdQ4`CQ+gV+z^3MfC~!2cc{SK;fj#!@}fuW6kl6k%seJ{guT$jKe|D!dp=>CaqLB# zqTXY5DytgN{A8WNXIM5U>MD$ZOUdJ<>qG-45d#EH1i%bZ|G#V_eTD<~VWWFXakhk( zuuQ5nmqh_Upjf6eLLqE33Nzt)K_cyaqD(hPa4xW55ggeUQxF*)kM2>l$>mGG%o)UX z?!72C;=bwg9mq$VzqH^LoRty+Hgkl)R*rG&dYW7LG<^OPXX9~i(Ak4! z^2FFuAiw}Bhw@z)g14=YGY$WHG!iz^^d*VFPIQHQ3rx{JYa;htt1}!-*XpYc#q+-r zUp2KqIJu`{-M(LivfSc`xY*div%)AX;V}nxdC}o`4F$46#f@nREOgu4mYDay(F@6E z$tB0U@R4p3RV&poiQ`+!Tc9}p?9AEMpN_!EQ3k?|d_A<#o!j%cd_{QNnCs@B)!O?d z(@tBTb&JA{?mN+$rhAjM(+*t87@65pvQN!J2jPadaiM*u^J-8c0?hm!2B5_*p@-btD$>tXa`-E|I==PKOGGb;FB`Uo)dD z&P!_wW)GSL9vTWI)#+#JLaVk{78H2kl>83jL__8}|A%0Q0JmQPJ*^kCS0FI2^!B1j z0}0g~heQ2i=cVbf9kvM+SmpRqr+EM2eK2OD#VJCn?O%|y&60HRt#jrJ{gr}O>(Vs>3!e_hV5XMcT< zYYlhJ7p6*m`?bkD=VF2)!t|fVD8D{%KmT5P=LyuLipMPS;E!(tp-6n*tDol=+g~jI z`~%+1-JM^|88%e=My_=)FJ-68Ce3RR1e{*m_GMQO?@pKJTDe}A$zLn7zwYPxJ60k- zE--GC}dOZ(o< z3kN<5g~>~EKZcQ0^qY^n1Xf?pHmt{icd8i1ETQPt*No{mH!L|mopOpY2g$2uHR4s& zae~Rx-hwY(4x^jbI{tfk{r6*oOL>q;xdHXv#lvF$t78Meg{6(>!koTRPF(y(?(=mc zc5>nsXvNEX{E6u}@E+*n%gFQY<}in=mz8Z^1&nPTMMXakEI%8t9L#>PYV+E>ynj7A zEp?t`4I=dSmZ={WQ2}XzdV0&ojr;%>CHEY z?0x{(qo3LxYuuctIr<8#;>EjV>czd=$4KwHWhwl+KAYT>MEN-z&rQ!`xXg&mVNsPO zS7%w>jsVLa#EHG(^>&U^{CfsHq=~5mU^V7eFB7;6>HYA88hr&MvjMM-7>~U->KM0R zhrLgAv3}yuH>8i}%ePzp=flqH$a^eicc}Un3s6U=#XO4{t|vf zz=SwZ{bu4SKZh^HyujGinWKfrb2$aVHM7G&fLTD)h4Cb7NGLx-kRd>q?eK=|cEErI zFY-mbYLHS`^-%HhjD&fuwG`QX9&8 z^khMT@8yx}i=Y$!{pr`rHd=D?g|5UC0ANMV!%?<7{w=>tD4BfuJEh(}ns>5U(s*ga zF&JkP-`v5AFYTeH8y!6mI2+f7Q&gRAa{hFqvq6yaS$Gmr=F5sDszZ9Iuh*CVX0&#R zpEJ_&;pXwee2`+1i!Jf{qCK*Dog1h4_wW9jN0h44h*?LGe?H{3q%G=@B89Q}fNp>3 zwdLoY4Q<9l3p?3AxruxNZuPs>)_)4I_eNj@qC6ke6tN#M#zKwWZcc1xIU+NAB)y8o zaS*3byG&-Wh62Gg+l+adbKb6rf3b1N|-q4C7M+oG4Moo&K^*RBLvTU+GN zwWr|Wutj{$j4@uUQ`3C-?o2rT=I`_~jx-&_c%l}a+rrTs+8p0v<#HvyA$-zbWrSSDW0 zbhjQEi;NM4QRY#pq)`Z8 z#@*fB9g4fVyE_zjw_wGsxVyW%JCqOC;;zM|v;~I$pEYY{&0Ne)-sGHQ=Oh<9C&_;H zPCHb$DDm5(OC&tLD?T-T+=|WjUvOvjyGG~y6o$Fj``=VhB>_RHbBXuBtD3OL^r_72 zKe__a%mUJ5GwaO$vmOSF6>@l>%)4p|8N zaMmz1>v_UBZ9m8;XzLLDy>!cJcqGWNaEp{A2YocN)I=9YjAkXoj7Ng~O{(ymaMu)7 zCyXG)WDrd$w`YjlZ;mQ}Qt<*Fa~RG%nSZR*n7ztC@d7u6f4nrG9lE<RguJ^_aIY1Z5)-v!AQJJA@D32%Dalz=t4f@&*J^U)binS z8Oxtkms9j>rX=DslyKN-$n%hAI7}S!Aqpzpa45rhg>Z;iRa0~Tfk`|>imnk38mDNG z0!ud>LLs=jglFA&X|bW>eT_oXAp8Ou*+q!8>$Z|Kn|sPqa2z{Fv`S&-5aXp&SlaJ` z*qkhbck)R?iNftxGA!H3TpX8J$>9uxw0ks)#kE+W_6&oydo+&4wM60S41LaL`D;FW zHJLV#s~kiK?;IsC`w;aYNT`A=uS&9lBkDtjC`6|G9F-z;5tP`yi`f~jN?s+teit<- zbl^TWNUfzTd4zuK8_qR1Ox>q|b%Ad0GkQwW)bdqKSFH~xTRKCsJRcd}x`jmsA*^sQ zb$Cw=)|b05B9$CQ4dNbcTgJRui@>w&aYMFIjBt1stlS8|$qmQGEhLP-+Lcw{Oi){( z0%I=5W|T$6?k8f2yGq)(KysJOYx4m^U#X|1eEdImr8->X)>75$6ijgapf z@L9M}ch@jya*>w6b<~=w0pEuSX;cuyKyYhA)o+2^RjU}r@wNtnl1%P*FqML+B@tRB z_|ym30sJc ztzfdB8Wq-Vc4J&<3{ZAh^ao(&X#~`TI_SHb<;$&rgN+JmW0aI*i!VXwd$Ajw#HBHq z7~(t|e+XP2@3agnMg;V@mPk@|l-~jmql?{VHs=R}RXZNKGjr~uUG72qWv*~(X|M0n z$+Jjgb4ACEs}`1}2apcLsL_%VuBb4}O~Rh&rATLycBlE&Vkq}=3tzMSES>T0@JZH_ zJxT+B;y5y5@LwoAVq5pEqQXoIP;y6^!MamWj(qA>wNl*mtWz{0qa}BYGCbh zPjq|KUd=^G`qtH6XC3xqjK6E&Umf?g<;dst>2YPeYpmK>b9zlL>>4uIJ!}5k*S-b)=fvke02m zPKl3t(MCpISRnd(igT2`-`qBNa0eDO8mJ~IJU=p=3O`y1&b$O}D(VqT6vjckM;J<5 z8G0%S@$Jus2l6|!x{moHEDizGvu3GAB=K?~EWBbh%;Q)x3LP9OX9xz3#UKncJy%9N z@RXmqVo2C0eM}f+JvuY%z!uvoOX|*c6B5m~4Jk~xz;wD$K7&IKg|-y>)or6m%Zzjs zBhgOPS9UYy=wSNQF+!I}_6JiFTsx2My)i}0ml8q5)8X};nH0lJPOLV#3G=Wh6)YlM z?Fe1nl$Yb9O`4ysa7rjzuo!%!Gb>@*fXW-T>TV~>8QQjD;C01VrjpSa0u|n#BHxdf zqOo-hS{ACzByF4wW@fyt%EO^nui-N7P}GTOG#JW)vq7$4T@_>lCi}YHMGIf~bGh-l z;5oX6U^5wH19r`X&uKYdYY7F$N55>ME<|vbsx(mX6iTjUDhq{&5rAcN9HP>g2TqdJ zm2c@%=*^~y31)3wnJ{1Ix11FEd3TQM9R_NC{>YOZOMb1U+u<3?hZ-3IXNgd&V z18*lXdQf9tiYM3OSNVR=2EDH-!bZ64_hu`?;xz{=s_154hq891cG;2X!{)Yi3h_o+ z*%EMVurhdgfgy;#_%sVNKs2dNaAg~X32nY!@276HouPt6H?iq5m>9;jn0Hc7>hAHg zIf}Wdbo|g_YBoAQDp6#aXc)Hlu8v?})U`|FPfNI#1BV zI)k9gcI_ty8VPMD-`PF?E>Egm&@F6+z1Cq9C$7MBOqdk& zV`EQ*n9s(KxbH0q`Kq$wa;Qtj5lLjSJPiX?>I+8I?*R1W+>9;)KY5UiPfOE#JCx4{5ZB&I@&@*-R zJk*4*E<<{q^4GJ;9|%ST&@9twdHdM@RBznj!HibC9aBv0QZ-gm@Fv7(FT)XVVQ!+=}51s$KgFS6w|HVQq$vX z4P9vcks3;pfD`NQFnEK6#svPhzI%)ivit~VU##-1enTcee4{Kxo8-Vk!T*vo!7h;g z3Qw@j)a6|489lNb^N)b3ndnL3h)BWD8h2CmvusBU2*JQqjTq;lY5*tRb**dxP92%5 z%X(pw8VVy`s^-d%sasFq11p5R$AL`Bz)UT=ii2ug5;z`pIAGA^_)A6olit?;hgjlR zTyGYQm~_?;oZeD+c8ac%i`dF;2HKT7SUO4AFECb+W{>b#hZTRH`;G6R++N4jx>3i|aoQ_h+A&~I>3uuu%4zw0P!def8=B*`-gm z>H_5geB1QkTG%NtG)n;_3LJx2ms%}!LCIBVCdfVnX#_JQik*v~jRU(Du&%pH&L6iH zp*KuwiqqFSwTK4}hfs*-HJozRdiE_x7_=m(E?r%2D_4)-mkpjdQr_)6M)O zAh#%*0?1^SEw&e%S9C$mNtSy>g7XI>%K-9Pyb{Qzx8zGCKTd)-+a4`^05&s4Bo#Vm zBX7TafDf3M;Nl(vE|l>^$VM7LmI4(`-+hHivXL^>pWHKqX^tC%A!>T#CdP8q4h-Gc z#@k8zl=4U9v4fPvHt6Ta!T>gA(-qiQQQb@OPq%F3kZt;|60QWJ2+Ihg%ZKhZ1)S_d z83Wr?REfj{>&Z}zj^OOrI2lL!>tC~YVQ_pEv)~@TAg6Hu6PIJ3m_}zU662T}If+LY zgL0?GUETU!kS2v>*A=c5m<3hyPqq<{l8wFu>OBHSn@vjf%XgBPoe($YMoS8$#zZ~Y zJss!q==k&OEIGw;^ciErb4CNVK>$Q6hw|&lrAWs-!md=gw4rk(2CT<_WH;>(#7;NK zmc^bS$}s`687VGaeif%(u@#tVX0TvauwN838(I+eJ`+y*LcqD@cgu17046BK8Bs=} zY&NU$3lT4BQ+^d}zS~wZ;suLpvTO|5V2_N9*(L$-gj1I)F$G!k4TuK=1pp_DihFKR zu{TIoS9+-#J{=@aY8s8MVK?)phVsvl*nnD>jaJq7jmYIT%mL>ykXtSdgSJXND!|p+ z%pWEPPBRpuQEfz_S`x$OT)mUd=THJsrZ3JPuDw%UaBvokljtiQYE}yDorZ^S6pDrm z)1(CvxKzlrZy8BhiBqOVRR-!3JP`oZPo?bhy%b|d)O5P#-%?vNa`jM;CTsi5;MQR5 zz$m4z{62rB7WYXdSlZs;Cy2W@yk|R!^LyPKTrS)Z_cqkUWiDNqGIvhR(R!C^YlMQ_ zwF{9)X$HDc3+e~*?Oq6R*zKuBFpO5=1EgYGV<;Ha;wXA)tRs?7#y0B07jeyI1}{U? zxmZ}WFc41WhA&&BDW4qORdE+fl&vbw_@TL_UKq_!3BI$`@T>H4acQA8kXexfvj z9^sAh&?*X~R;VbMH<)lEOkNh7WLwvI@d0JV`w~0>{8^DbF;kTq#$E>bGCV1uJ5XEy zQDAc~mz-}uKg5^P!qp(;)Xehn=~W!;CXY?nAiqj04T0e1_PoNs*Q-xX!M)-j#}f*O+` zuf2(vBdoXR&7lQXS?fV?Lg6mXKvPEP-mWnkc(?}`FI9^*9B2Pvh3jm90A*b!yzZSd z4^5XQ?1kLRVx%Hu0)_wZ7tN?B%xq;UhlsrcoT&_D?XWte?+?g6a2dO78HAlYXbqI@ zSmGa6h|tf_^Suf*D!as+9}@Z0!WfTudK_kBc_mQgN%;_Y*oB7bQ!rYzui8Onn=)ig+zq;u;)bMQNM}C@l3zk%{ zt&cm~@t~I+BPaq7xHv~zgvWwJ71$Y-Q3(-a-Bvh%@Jt?-e+bpc1?C@XulfTdun>{B z&$iN2=Bu(O0%^yT5>h+_ox#(j;E=m;GQK+66sDQ8eiv;q7BsatAaN}fj2hRc*bS77=Pi~QVny2;bFjtA*vue=%u1N2C=dx{TNq7*daIe9g{WM*+tLz=hwE{am8H@i5hb`3wvD$nJ}u zVR-MO8y4}py2{nU0Ynb)GA^-T3@~UtaQC0_}qw!=_7UZIEz2Rt|Whs28yF$LYaKg4% zf^ake9m$MP{g|N`Z-+u-AAP??O4w|IRE-qNFlcQkNOMHE_6yUP_(5~Hg%P(odvez} z(XKI5F1(uEURJ6oAzh*>OHm#R4Ya>Qs?JTg=z=`p3_{<&k8vDtoMty-Lkc5@lT)c~ zMtvd*r%AP5dvD^cCnG)4hpD=Ycf(Sm;sirL*(QpW*q%eeSBImIxEm?_79++4vnD}$Nwk;2ZhQ&cpaY@UvH!bCeI@r~hV z^y?yuil=KhXD;PTF2F<3IU6@BcR`Q3@RG$OR8f>@K#V9GTz*@r|hQebntE@n7^ zJ)$V^2hrKoPJTp8eVkB_FxWHAm`LzaaLF8KK3RvbTW6Z)LWDB|7-=g5a-4_0;O}Dw zwPvi;$S^0mJb9hHdsv3peL#T`{sowdK@rhJFAbK67@VMg}KhfVwt28BqvzDdyO})2S)D9jktlhM};hv@R{%VJdI{EG_I@ zTv}Ks>PcMkpY#xfyPTy#kUhR(kZmD|{YY=Um0Jmn4_B^6fAQwl??h zC&N3>q;9ypM$qSszo2FZE}}^BJTb9P1cW!rAW+yy)eq5Nr}mfd)T!U zqT5Anf)Y*Q<2L4I8AI;$X}H&rKc{#oRC{knvICGht|>Q^yp1*aVmuF)PBVRc3CZ#f z-+SXJpI9L+PD%DqW@1&ppP_7$G=Yt8Ds%-l~(Xra|v63?l2XBK1Q(pf?a97b$WWC(kPI~u7V$njO?E|9fv0M!=Mj=ii{yMLPIXW70S=o z%2cWx3@~L)h0lz^w-u-NiKoiHF$EzhGP9po7IC?xIEjWK;d25IJI%ux+5)rUOP?;; zv5wjv?H2qcjjAZ}7%TmyOLAU^0zX^L!kIHZpx0kw^slzu)dT@n&E23^O1LA_yXCIjpN|%Mc<1qF_X3SSBVr!jZz| zuNxcB*Ak`;tordESQP9m;3)`G+I9IZL~}>z$9NIx!{G7T#VX zm;n;uvT4VlW@a{$J>@X2IVCY{?ZjXhvBGkn3-PcrwnN*2(7@Ge7__y@H5*2h8fXY= zgJ}Oda_BOQq(|9odu1K?IH4U|`?(q55FE0bYzGtCG7MbmkMoCK>IKj9Md?nm7mMvX zFdlx7Eq@IMUnVgeh?q0`_pV3T{n^4tm?QHD&){dq??+fPS^t&S}6Xmno;MGMIc9ZuqNPE2$be;$7_^BOm55~6KE zO!b|pY!O4oqjV$*HtHYQ>s9tLSCMv3*GSMmN^ScUv8{t!^3rGA%hDk+4D)2PSnR_i z(M~x}IA5Q8mm~5DvUxD2e7;KE(>t>}a91lU)H1-`EF)x$fV|fV!j~7;HAxswi2}}N z`Ljxx1k_YfdCd9{-IDj&Z|Dl#1ii zA433@i#@JFoJc8A$1?^#Ji}}}x&b4hxu#s{{CDM;q+UD%rmb;LBg$eC21ZMa6%Hm! zbt;uH&AuEVb+>d|+cPB!LMI}8qL^ql9Zj@7dJcK;hbZ;GI@#p3E(z&6Df2poaC!A5 z4+UxtxW7aBNHIrPDYfik%6~C2v*@T)?bQJRzBfg4D2Ap(s#CBuDk2#EoKm8~8Bnxr zvS;@aTkl)vpVZ%$#FN1;wIYG9tnZtu)Zg^MPs&V#j>KqNw79=K(FNL;u^gtT=eis9 z^TTV-8roIFG^h4ok`I(*Th_?9?!&NbB$H`+M)+Y>=pIVaD_295B#rMyYuc5^v||I) zP%#G`k_a-n8>*^f_y_vta3IaUor*k&x=8tHW6fFJw$%#Xf6+2(HP-eXm;v#&ifWRF9y(2fpnCUt(RN>G({dHz}IO9tJWl zsJ}CesE4B!=vbb1{>w}{tgoblu^K&)^9|VFQD^o&B9JU*u;_0U+NtOsffb z3DtjYM>#{M7DG@s5t~|DQ>8!3?UQdGt;un@W8X4#T7D0EI#XJE_bk5_c^=;22xt_$ zv=4ZAiTuN7{{5U!Rt;d{4tQ@36pG3W*>%aC<= zib3$;rR1+%6=8LiJYn<2-wg+&M7q7CCzJmD8C1-7zgbKESb0C7vOOEi>V%%*;*&-l zI`J|JS@VPrTEm9QLuJ`UHTikCHcn8TpbWCNVNt1BRn;5kt}pt8+yuVbw74gHifxN~ zemnoEZO#8j1Ws*xK6m+lgyDa;;^aNFp5<0ZoeDC48eHI0iJkS;_n2KOcF+HBSBC2W zJYh!A0Xzb*J?s1PS8m1sDLW_Id@4PkCN}@4tnsP%e{TI>@+Pi*D)`Iu6QchV?@wI* ze+$p4t^NQhXgAUs_GV;r<#B}5Q1f0}u2+Zy@z15n`d^(VX`jEsu3(dYgn-{5sfl#( zMMH5%d@>O9{(n|K@%1SX3{Rz#!LDJtv)E-A%6PP=GN;%BI_3EC=J8w4aWz9*_ME`5 z{=@fZvhxqG4xhhomh5@GIgZG(#7N)l;fo-pyd8~*D|_uP7YX(EYG3>~42VI_*X1pe zG;_nd!{6?WK$d4Qc#jbP&NIKJaJvqwMms2>5cU?b7A3(5J2%;SQBVDM%UeN3$IT1s zJt*kzpl9gp_eC+l!OKsapD_KSw|w5_PGQcC>v+DJXMRPzrewaGJ)`nVJ8$B*=Zw?7 zl6O}`-ZjGf2i`dhTY6=w)OAl61~24_@&!ZtsPBGVwM_U2|5%NIIDr4sBwl$=#cu?~ z654cWNu6O>n=HAlt5#VSKFN!1fW>o4#tQTli&rP}u=#oA3my_gAg&BS^nq?7;&|AK z5<_UvN?HK4Ohrkot25`U)_iEf{V($%0C(llMa3sgHrK5y&28mEt3kV=z3^IdB-+4M zv)oWQYp;hWkO$y@Gt(qSc4FpS)=^n~SUMpV{{>%T3bxemdQGZS7@lDwHEV}&R`DuTGuRtOjb6!A-2!Cp3(mG>rdpnNp{ zd8=3aanfZ|UqsAwQyr~kHuu;av06~fwa(aF(vf#prHHJ#Ovwaq`%)eP7*DzUE(SNe^*Gq`il4fVz^5r;J;ODQcwjllcW z>(0}WmvfN7-@qHAPVa%zq|cp|9?d&>63@I{znIiNr>{NqxD4b_TeaK=X(stYV*+jD zh4OOL#hw@;-;>3)V8@e_)4!|gSrdeoW4mJjTOSxZTXn_cXe-WGMslytaRaA15QpBV zZX>2eS79FHq-)ssG2Ln+$ z&@9K>e@}8CxU?dh*glQKyQhwk9I6wq?Q1n`g^_M5;4z zBZZA@jP2Lhp+e06HmLOTHwqEMt$f?R*@pq|{g9A^Pfym>boj41Ve_|iXqkM})5}q| zuGFY{PzR3rn|_qz5X7I6iu2lL)KSdYLrx03(NE@^(M3eI7-qr%n{TIjh_i^YoC=-+xi3hfshmSe@22S`TYZm1xjc41%7Keia ze0z|1>Pq-LwL0}NA>!9X&f&#)H!2&oy~pDpKX_nh9z-Gs01-XWs#A22kL{b&{Ya30 zKf`z}``VZK!AyTPHzu>5SEObgvpSn!XyJ}XiBenBTnVn>Yl>7F zvuck2uo~~Lh!F$T+VR-kM4E+Mj~4q^YnyGsR(tm@PZ#x#IYDTK-XVEY#!Z(}^jtA zw!`qKLadXP?HT>Y9rD&S?DlP-0*8*r8k2A$z+~gThC{pVi6dS%Krd9r%(1p)-h1}z zz}j~C<^_yl{CrS6u_{0a_1B<*U9jk(URrjjgOuibBM5sfVBP8C}Wvyv-@-bN+MM2z!&On!+fX zmt@2beWVZk&I$j3OWdPeQ6j|_8`DeZh3PzYDNRX{(yj74W7TVA9)=97ac(XNsxk7P zQ=PsH+{1?*HGsuBLOOH)-p&|V`c){5KSUf6p;@|d*6)EvbJY->E)UUew9R4u_eq$( z?;)xEC9PIDdT-O+zalZTiMm`7n{b!fv!cq|jwuPXIw_rdRl_BEVrXZqGR+Eh!VTdW zPb&H!>=o=D*q1^ch1dV(0^A3jqbn*6r~PdGuzlH1!&>s7@~ZtrQkjU1am#G$vI|1m~^|5#u9V znxC!p1_Wk%ZiU)#e}2|MUA+Hz)P5-_@8IlL8t}YGEJMGl>pxqLy4Pj^5rm6x%G<6= z6E(j(-~&!upFq>HCY2;T3O7daj7~h7R*?~WmRA^{`?{v3{q&D=uNSFDK=0ZN@H zkVFn$(2w!R=i}a(di`!fJsqwjuzvQkv zplsG>6xCQS8{Ff5_hK`0>w-=_qYR(3e183M%0b$M|FX7^pk*)==JRHhg6rAn9>y>O zz-ZZ51FOQH;53~bKmo~aBp8d8zZOH zS&KYAsKVeFvRnW5gI-L>nLCdOARSNDz}8UKQq)3?*8VY8Is2?qBL)?de!D?_ypprE zS}YPTi>ngS5X1Oy`>sZsE)h@;@a(qM{9&BztS7UnA^+8%z)bC^c<&^EiD%qaQkA|Q z!X8Sss=>@Q9LjcH3^cLtunwj`c`x2yD)Wyhw+#JPp_mm{8N`V;?Ze9z@Sr9|U-w)G z+RBZ)NmseCV;J-Q(9-yT(a(-8y;nv1n!y?wR$@pEl3K`?pH-Q7D{=kc)lqRDYN^j3 zdg*f&(NS=Z)-?Vx*2%+CSldNajSfG$2zR5(g%R}xrAAykM^znGhQ31Xh59?F8BZBN z(I9d7FaKIoeQ9VNp9es+X?JlJ3u0X@tXwT7HhEQ`D;JY%ZZ?LmkzJ2^aco&Q=uaNj zAIIAnK^M@i)NqEXEZ5ICp?MbXT`U-|RFLw7ckVzWG;>jET;bF*ciytqem?2sx#KIg zQf=%?Mz*T>Uw7cAb85tXHYz)S+Kf%8*xhI|FmpFN8>e2IP>Bf@Upb z1&Yqz5Y~NZHAFKngu-G?*l3r`!dB$M`R~ndX!fK0^qTO7_>yxUlnCDaFQDb`g{G!OeR1;e0TAVtNpAC0Pq~V9(i(qX&+Kv* zJN)Mex<0YWhB>IuL01dz2@D-%yLLAR-^9SHQ<7+-pKa@kFT_o!LHo+2t8#|Fm_O>TnjOx#TE**~AWT$ehRCGAP2l22OO(eAz!;6gocCtU0o!4Ri`87l8Csq4MsCf(4km=LoN5j!5v#gvV^1i!{c4ETYwXTvm7<_>*?w}@R(RQ3-C7X z#ryDB9UzEHh{%|DOQ3nn7JJo)xxeu6SjI19u7rCtp=qJrt}8=_ZUkNP-+cUXbJ@{T zX){f-MV(Z(ZH6{FwP`k#Qre}u6Da>NO)yQxK!LrZ*Me`7f%R_vaeDsi@7wb1d*c4Z zii5BodUbz}lN;H0E~mKElwTo-uRvgY17=~7FHw8peIY$Ax|frPFujnCG=rk)x!QV2 z1#}s-6-;4n|6h^)r={j9>)-(>9DRRZeOdi^1F)&%U)GLY7OD)4G>QL7=*%04g%$cHs<)1Wli> zJGd|2-mxyPrLmO+3#gZy!QC+ly2cxn<7rJ?#gyZmu6Ojgpg#kSKl#nq$|Cj0A>;Sr zs*u^1Xtk-iASA|B|8XLJy=kyCT)3ui*&uMGZgC83%XI$D={OP z7KRIV#;v>=)Owo@1#Ia)%O%)=Hwdts5?lteKkUZ2Xb|?S=*Ww*JZx9>o&ljulKoV&OfH-Ws_Pzu~@oMF+E$G6be?-%{JU?4~~S+pjMc^e$(`01~J12tGJx=SXD!oF2VNQm5L-^vV)>Kf#5{5KWa>4Waanoc{gv z4?jZT9ygnlp4x9#ooc`BkIk$#>aTlQ7$T+emCk!&*1|_B>DOvri#vYf9owDyTk_Q& z*PP3OR-*O|aWH>gGbpyCs$@-vOJ|;xi?vFHxlCQc1CQqrNwM7Gkh_A*X*F&9NnSKB-8z()?E?p5n=hFHMHGQ% zAU94BfRy>DbHlQguIa}(ew749kP4oV=fl$@rd<$KjCITIhnGm!!fD2i^VDfZxHXuC zs29m>@%Q75MixcsucAT+C`3i*=$&F#iDwt&oDh55l~?E@@p$$3gr?Zi zUOkJGJ5?*vt(Z5S9is0QEorgb2gBC{lLRTtz(1Y%Z_1e~=4Od}95&&I%wH4{;@NVm zsNsy8FL#YquG9DZjq3zr{RSE{y?OMQM&3E5agD=2d`WkVBMEz@EXu4tM4nMgPc{92 zDxeUieWtC-{QP40RM98zxSPZD@@_~M`d&_2nb2q3JC!Yh-;GmXWmV{2O!JSThuUZu z2I#HnXr6rQRvjZXsT;5htK^~xOUG!F9t6R}I}87t6gbP>KYKsfrfIlOKh=l5T1=nF zALpscx=O%Lzp#JVo+alp*W~t;wizh7?}Z<6Pryxi9MA9~tl@EI;(n$w z43w7=cI;^KbMMF4NtW{bW(Yz}#Qmwz-bgLAdr>{~(?oR)4GoBnDj!%kyGMw*eq-jG3Ysw$+!PP87pKlc2Z6^?Q@$Mg@)<-7ql-S+Fa12M?8gh1l zkEaV2ctd6>LSJyH7#O1d8CBmI_TO&RtuYm~Xl+RPYm7a|aP_S*XP0R1V%F=QJe`t+ zLj>NJgoefO^YH@D$Se!eXcIu*AD9dq%7a7Yz%YeY^mo^a&y)RxgY5c`wUrWS?Qi}( z|805d)cB8msPL_b|5zLra~k`vMY4{A|5!9lGPpx#Q4_+kgdS=XAT7pl9JSg4{db@V zJ%9c)P(`=M&w+9d>tA1YR7w)wad|%(XchzUnYjWl%nS?CNOMMSIB7PNbZ4he;FJr} zJ`3A_g1_5Pa-JsqGVq;gOc$rDJx=e+YDNFze%c$(8EUV6UTtWV*!9a@K|=au`!C<~ z`}y$?vyThsjEci|*Y;q$%^)iK>*4kSkzcqk!J}{5_G>Cr!ff%X+2WL`<-HGM$L-C) z563AQviQ#YGJ|GL2z{qkLF}^l_5rV^<^XJBq{~-^3)GX#s!Mo@YAqD1&V|`HsZJ;6IvI zogiI10Fx$ktvOf6$=%~g`{+qA&gTe>E^O9q)Rmx9Im?X1^EyIJ9Bu~}s3FN!#FP06 zU~>Zb7kNGZS8)39aFGHinRlL`d@TV zsN^C>q6Q+C3M8JGQ$qCtZ)6yDgoz_8gDEpo6b52C8(l zp4dQvIdp%D^!?^47Y(QqFhER?C~IarunE6qbVqREEWXlWM?Yn#VLk0g{+vgia-I0b zgZT*b=3d)`=WSYN6{26)vFNUd96FBY%M!=GI*#Vmzo&D3G=7EC>rOQM!{@rHngMFOsh=O@w z*Ot=9kSkVc!bR|;*n|*#-D@UpUHYtz*x=ok@;wFr@RVE2XfSC@X_QF&LwlA*NL1-UBaf84E*n!EwW zLiX;Pyve%{jHU%&O07$?czbkoPDfq&+BID3C@LK03_)_jxKd&`JXlrK^b`5zij|p&!N6 zEIMj&3%1-7uHU|?p4(-{-Q(xyZq>>RYj0R)Pv&I})W5vZMU($TFbw@Wh zU2T7g+Npm8IJS!2q&W0lg$~b+EbQa@S-L?n(d!))fq zZb*0XksD;bmSDCf!t^xQY*tS)@(cW|x>w=tnPI&KGL{72(CS!{MH*M4XHt$ftR!*5 zTHa_H+yMLJZE0H$3k}`6PP+TyCGL?2n>_7E55F4Ey!{^Rw;*`Q+y)K*>sN)>AVrpBSEPDh~#a#6Q+MPqScDe#7AibXqhY4j{xlArJnuFCaw zA!vICDoU2QcrV(n23ug!6~dWU)`AAHjHGc1^;Dcz^F>Cv0U+;`i2baG|a4^!h|KJ{w*4W z`*nkfcY?-`?|`lD+6I~{kF16trfzYm6=veXpJH?S%_j_~LGQ1r z%v zpx?4d4+yOS=0?_F6AiQ2g#38{*&+|eOHh(`@Ncrzpeb#Wh)ez*tKFm)m;FwFKsWZf2;rC4pa3nAv8LJ@eE76;?qFZ1ck z3e0}D=hQ2o0dMh}CsA`MA}cuab=sO+i=zpb*E)vYm5$4~|6qi$wAaA^%C;Wj(7u*+ zUard)@P(hDNIv;_^^mRQ@rx&}k?~vq=m-4hn`GwJy54lKY;SbGZ$p z9*n8=Qr6$#mN#i+%=aXQEm#BnE8&6p$}R4o_+Zk3wat{X0l|K_fXb-#aN%7@;bHWZ zH!WD4R5o}`c7=r2Z_e#Nb*HmAf7sXX-xmD)TDq)?yChNOvIa#-(u9`3xXww@IM%Jk z@ib&2of1Z5N|mHv#=9Ew+pdcMu_BaS+0? zEwG`DpS~Dvb^HahdIkhY}HXS!B}e`o`dOba-{JjF0^VVmW~nL zA=y2P=ra{S6oCvHSLMQfuV~F%7HUE0Zx>ice#mh*-Mfp|U6mLnX4c|8nm26dv-}{G z%47RtL+YX@&7&I**aotk!BAGPDQ1uHBVrG8di_H{)I~KVv@Tq}`cqZ(i`AgglM4TR zS#kMPN}PMgh0!6_s@{^Vgh*OY@77%G{ds?FASshXbqOc+mk0-)h6vL+nOD;qvx3Q6 ztJChq#Lbte#MZqSHEMA2A15o0p~_8VqX#ty3J50#*|HYNK)YjM8!o(#mqF)cEL{P_ zbL-$j1GCSS~}grmsvenH$Y$Mf7?V)uwBm8wJHymTG@z8JrT7SAf>xcs5qz z9A+npQ~_#-pgALm`kmm-zMc?3<|(2ePM@icd973pnd+lqguug^*{=SMz-UHAmf_ETVXNC`@LAbvwrN&_rzX|jSYR?R zOq9&6wsTORl%A*Ri2BLs5x-@2S0$)$l~hk7v;`O+X6BI%v{;T-vs8*+_C(l>mGKF_ zZ6JhC?b%K}K2*eAnBfhRVS-^BDcbwVyR`8&Sf0EGU3SFpx_TkUwt3Twx9p+tSI-o) zkI_^8W!`F=&+8waXHzmPR-Ki;cAr|fko~j!$6t#z!GcARVu4U5yXYY)QTZRmJGlQe zw;fF}Oc^c5n(z<{>T@5n-q~p2XaO9Xc8UELVWJ zlBAU4A!DbAsNp4s7GJixCNo?2*qD&s%V?W=Hx<4k;~|BfR`$b4LTC@Jp>6s<T?qMmS*jl>P9 zDti)J@B7A_9t_ycv5(nK8Ya*bg&uIjRG}x2_vih71dU%=8@j*CSX@gS?;l4N(fj7= zoQN{b*pOwi5)JT=g4*>*%wKNFd5d@tlPwfgg)Y^;1^R7T5f<$al&NT{2zyD@O!VRZ z0X;y%zkQHZU1v|chEo2JXK2L4(7R`BFbs6;p%j$GPGy|9yYvndMp^+SC^=XkfHHVP ze}5^ktlLLWKq|XJ87a$=g@CNmV#Eu#5iNs zLJo!Ait5uj`+~PBS6z{J0}~HHEXT>x&Aw{665P}A`Fjs`xZVQ8Ps%df9b8NmuR9Ir6 zFk94NrT8!G$b%6pDc@`xP3eJ}Kuv2Ov2XJtUpkyh>q>@F2}ay~`a^O5>2Fs6pt_hk zOqRA#pE(^)z|VBzjbUyT&rK&@AJs=3^i4yju1>rsY5I1Zq-1lvgj>`hJvLwme+4GH zr%FG{>uH{+0XX7xk0ks}vP%0sPxDBB!p@fTK@~1Q&$WlQc{0-;+pshpeaY^J6+8G^<=(uzQ7!8# zHdy6a$%=hYzp5)Mn$UU&8VGmx|B_@gc~y@*0NeDIaVC}-X54fzCJolrR`Kk88ba3 zx7;?X>{mHUcPt%2_zUj_*@1fm1}94BBc;vu`yF2XmL3fKPk6BR;>+M*ygT^MtMLo+ z$B(@o9uO5i8v%sy7eCl+e|2Aw&DKjIMyN$H?)Gj?lJYu%6dCFAbQ3yQ4imTrdU*}Z zU7coN=V-*Pa-00ks~!^CVTiLn67B5K(E{QI*y0HJ_%j5ghpYzOdU}%0I*LzD=Pvh= zF{LaxFhoJECEZ0dq#!9plp#ELy-&j8-WL)k_h@cPJW+BEkO9;ne-Hxd@%v*ET9W}+ z0OJn7rG?`RH7eo3SrXx>#2frwTIjKya3%p7pCl~YE z3LyjCm(mP(sLn$)ye@I5%1slP7B?HKolHfXO={iOaACfNIo`eMqZfTe8w?Xb?J+fC z%>D|~%phtgP{D4KfBzkz?Mbyw*hhYNoIiiUid!|5Nc}|vR7F$bkrHmQGj3wyXj*HE z5p#5O@=dR>j&cG06t1E&^m|YeAr%wONxAnS*z?kTNuvt^(|mTXQIQe{ETz>qK`1MH z=v_{;6A8AWihPGHnJSV*64a@MT-U;~1pk5v-eiYrk@{jSf3{g0YT1wT*s|;*;^@O0 z0tvEv%De z>M3tUE7j5T+w%Ma z5=en!f5jax0ynpWLrzQTK5>*-)PtyDXBPbe|80#kC}>k?hs;OcY5zOyftok2@Uwfu zPZ%z7I$m>x-jui5vQ_sWw#z>8(cf{$Q2R)1cZ17eDF&5Hn?_KZqDYWn)0RUu^TYV_ zk(8HNts}FDwNT|*^~ysLJ9Yra`KuU1(M!r9e@kERb2eK*1GMWtqogSC6SSrUsB~-K zxH#wQ3!M65f@XGmuxVKs8cto;hQ@z}Wa9z4j?rTbhBETe1!V!R0##u&T@Y-17eJT0 z8LEo2+9jB}qgfHE8mdq>OqIlBEmim^UqXSwC|@aB!yV(8wb{icynz-|@IGU?6!;*c ze~d>ooUqa%Wh}eKz#eOF!jdES5rbn8Z}E&1M-h&JqDdPm`AGBcf)<*+t|>Dz*n?eO zLZQ)T7Zkg1(<5u-EB`oAcGWoQp#?k6v33N-xsEZLki}1?r87}&9^V~dA*ptZ<;fFr zLTJai4MJ0$f&|qP%EoZ-fxVeEpYbDte~7H&DMT^+3DDb`&Sme6-P^mxMKZs4L40(= zmOj;w%*s&K=WC}B8nUMI*P8ilGf%*zC*{xoE!NPN8;A5yc)7yNN=?vx7aHincM{E# z7y>q0F1N+r$N+8p0?cC~x8DS~70iw+T!=7j5#3@GAr6zhCk%FIZK}qa{Vt@7e>eYz z;)|aFyzrIHABzO1V8gy-!yMiLk={Rs4ZP+JUWN&(2W4&fy5g!t)QE$W^nWGUbs1r( zmi+oCH|1QqDj20ht#sPpCPDkXmB*Gxs*!(&%Zi2mov(Z}Uw`rx-AcO*DAi>l@R!5f z7)*wvXUK<$r;Osk@e}10G*YYV!HVK}WlK`Z{-bbDB3y4VtFKR6?2^nu0 zn`m`G{W4O^HVK0K3g}|Ysd(Qtp4IRFu3g2Xeqypos+jDE#Lf9~q5BGWS; zbg-i)d)%ta!OHizw;e$+SOP#O--7>bMAexB!Kp6j!z=zn`kw#qjPxVfuKYs=q4K>Z zqQNgzRDPaDH$>rU$MD11@#(wMlk;o15PfRp59@abNusT?B4;r)T=fo=*M0}?w^Vdn zLIMbJDV`H`S2jjgWGI(Re~aDMd{R%Q#Pj+GLD39)_L(f8P>}^Q#}B`0`YG zxPdSOjzglIp7MXvN&ZU~!M7IVyVKF(@agcT(e%bhH;a$``#>T4tIaP`Xphn)QvGN8 z``dWW&uP#^{+!}C;_mdz9dM|L^Bkd)O{lomx()7YC~g=VK0Ny;tyXPs+cpsXu3y0c zL@UD)knCd}dnguvx9<=N!3ux>SKBzY|Gj^O+hv<%2Pn+$+nohkmWD9pJO~WXnb|{_ zj7b#YSI5rSPJuJ!{q0ZpO15NMvScT8&c4o>)>3ru{pjjSy86DiKcCKDycm;_??%LF z$4TUkl40^VC-K|u&hCrAosoF%j)-#{Ovor9iorn~dw0Rv+#>0FFL0wrtE62wPO6jjsS>JFT#j6-K$|p! zQ}@mrb;H0U^fH<0Q{*&%a7&BL9nsXZ6yw;rOx$4XMq`IOBqSKejxzO&-(NWN&pZkf z+kR;LfQMj1LZA`xL z&dp-hok0>UNXOaClAnfSZ{m?COFi-3yBJcW5nzPQenuciL$VhAZ^vo1WRly*3o@ZJ zt=Hw>KD&|Uj=d55yt%n45)=i{gfiWjOx%T^0Gaca{$D2GDLQ|Q<1Q-bNvqt0=#HtD zepD(pWe-&l^dLf13E?HJsli$y)`iD~GMNyPG} z_@Oet2*xB0D-Pq2pTla~lr*@hEkC<__7}eI-umQ<+8+ZT$5iKRUnLd|*(CL2K>raU zv!Ghu8aCWCo7aCgyIJHUjEFm$=IT}KxG_r&Y&#MQ_~T7z;`B$yqiS}85eX*_VmO9Y zBqj*(3M*rtS^&Ae0gbownHNH7iF8`KCE8IKBwnx}`Cp!LA&I|&v!Hw`7RA7u&3&4t z-TKm6=WL9HP|R^#sRyf8@|cU4%VHfWsTstWP`yBt$;E$XVcRNTQIk)+PoyZQ6kToW zYgpX&Qla1QZWjsHY8JFor`$%$Eu0(O#n8UxY_A*6X6_}K(=Lrdkdty-v~0jrgxI$g zP-9%Rg8p=E0gCctsBVl+B6ufl_^VQ^F#N#)ET74tViU9d1M}e#ZS5X^Shzmez!(J% z@^RJKrec3-ewK!DL3}syKC>JT(onVN%!yqd19Rer!igJp!RKm=hyg}a_e-teuzPZF zc{v;!OSdfW(2HboG-#4_czn@F(vjyASrmj#vW|{Vdd-CK-*N(ZoKc%cAN$>_}o&P@W z9}X{%``=UB{^8@FLj z{N8_(0HlA=ZDZ80Upp^(4+HL$OMSRrFh067D&^|R4`(#;&Ih!b#Wx-pyq?A7S zVL{D!%q>O^rD(Q0XkS$orf7N1s*Ad+5RSa7sWRwZR#q9{I~ae3 ziy+C-uxxFEEIImm>qZ`#7xc%ne@+uB=Lfu|`0);?lhiSLj5dZz-R(GuRe#d5!;T!ys6{!Aij zv=rF7v%R(Md|TmFyRzw zwxwlVyXo^_;ys+rWxAamT=kR+mNpQ$)RRRKnz|0G3o?-aFl;khwt?g0MF*b zbAJ)H)6f7ywJ_!=H4wj9Mu!yQsTar?G1v?wl4?+HEQ@mCOM(`DLxc-ogYPd(;yd&{ z3o$g%3?C)b;Cr(qK04qTxrva(!p%@JS`E<6WeYkSOXX#lan%=eIM(3%^OE@9d&#{Q zlY>BlDdL);74#a=uUCHq`YbBRJTt6I8X%uV8pK~#gZSsL44K9)g_+W8K>xBN=*y`$ zNlwT_s%KeLGsqda2JznBDj;8Yche$fj9UUU(rZw^d$%O&^YC8k8>utYtWyo|b-lr| z-9a~WeG*ewRBAL?Ow%TpQETw-?>EDn?!RMxN*b!~r{pM$7=3?gzUZh(5F@aTni!d* zl8LJCsN_j?FgKQkNj()IsivnQ6Y2o|Wl4bGs$_ENx+*fE4&a+50dij@6V#@&DWZQ)9uBnF$IMN%Emw{Mrk z*$FJTK~JoV&$ zAdPC+jilt-&hPEA-N^S5aT6l78a$#IU{0*<^i~7*EGpE+eEd?-IS*|PmNt@^>-)04 zc|=14VZ?u0^H>eolD_ltOF=j2dv95NXLD52V7b8@Rf$>$cz?ec;Nxun6kD?sVa?uQ zA2$TeBQheiX&b>7NQx&Md2k59OCCGYd891SsXMyk!qmuMu z*PV@Rb|g~T5hibE>XUmsjd$y3TM|&dWx28uE^U9%nVLk{syJy@q;*k2oRwzlWwRMZ z99RidS-1(Rj98%h-zKO&g2}S^L}V<&YE;rj2M{6`V3GdI7pE#E&Cnqk={ARLv{gqC zF<-@Vc%`jzYLy9OLS-9`Rff~Vg0Fs_*h*nYZr0avpw-tm&!ey0EOzUgChB6i+fp7H z*gJnCl#obJ;QX^K5^8a6$@-chp@fnNZ8Sj=#)(i03)o?yX=N~sRJ|5Lb!3l5D24@^ zqLFozLqqjsho%=rVRX5e)9xeYRV)|Ppv-dgqUiqB#GL=_5r2FXg)_!F3pRk2(F#b9 z5ampOU$eUA1xaeB^wV(KTw~xsC?K(oQ%!%+z(p0*XGz-d0mqMP!pX=4m^Q`IX%6NP zH{>zK>|2eylrWR{n1oo)>5Ac}w7 zN5&mLo4{g(5-JxWmH>5j`#P6(k%@y0qA28 z6Rs%yYyyc9N|+W9(F_!vHSW^kF>AHckQFFMcruNPml5P|A2@X%Z^`MxPdp#a8}qc% z?E_XQ*Kj~|=CsI|YYLx+)8zz{TaE8b6G$<%VQg|IHnw3c50jg3|Db;+S}*^f zU2a40Wy(DyUPK=Wsbuj$&u$>fh(R;c>rv^6{|ez~s8e zexj{-Matn>zne=w45{&IXfAp`d_2Bj$s_XH!ix+k1$UmDaaT;((L7yq4Z>|cH~eZc zjee~(i{}mz9DEtd6Xzt&HsyaMWLD3pV2~$`_tYrNCr0LY`P>E@_8eSZIrm;Nbr?(F z7+a2GvkA<6<7Ap7QZ;S5NuM=Sb5?Zmb$papAc;Jh_IjdYi`lGlY}ew)AaNfI!z!Me z5DO)~ZpG6uN|5a(lDBSX`!2~!FE;pac5y{p@A5AvXZ`PsW3m(p9p`^&Sm{)LZSD=w za-|ytvn!E|<$%t-MSoM0P#$>M6xlIlBNZD2E30lB&NAZ~D97=MJSsX{8p|g4p*8yB z?)ek>JoIKq1WvYzyrxkr@XOF5N~#%qGlgnsY$wZ>#Z_5s^a0nCf zWF@Kj$Q8PL&4H%guLOTH7xguV7_|lr3gF70zUr`{#vnj}U-83=Y-DYv_@~78dk^Vs zcNVPnS$?&(wfgPM6j%m)#_PB{%# z`vnr-SnBoE#fqu09QZxNEy-IbE8#XAKU(+o;eB>1U)tA;sIOkPf@i5z)it0_1<+`` z#=IzNv_8i9MvQ-kt?WgmlCrO7iKS2Oc}Gg_HC0X;WwDFL<@<C2?r1sNtZ4)Znkh`LuMY__&|m3C>~&h7$ZR?IMQ z!^;Xj4VJ~`d6u&*T%VVg>dnoHxW|TF`=uV{<08N9oIsmx36Q%I7Opkf z$pdI6rTc$bvDGx)%*t+ON9iLspq;}dnR%m-R{e}J)~QN7=TSM+wJZIKj*i}~qn-G~ z6}8W({|te$1>kQTsM~;S)nQ48)4E`wBgP`3ABOq??{vs;C0IGzfr>mvgw00X4}fh3hgng>8l@#qSkuB zV#a?I245@E6``zDYDxj)4PJaW@``5n_tFnfuf%vhuUxq3p3F#)aQ%v~g^Fe3uc>8r zp}sVLu-k)C^zzr!UZlp97RqNgmZN-&yUMN0IRRdZg8o{D+jY~XH4UvMUwFx*-hNZp zRrB@^b6&GP-Lj*=a>=@iG*qwSQyV>&5_^A!Dp!--u{(zu3EI+PRoZ29WBT&S5tK@; zh9%OB9b~*<&ow^;lFz$HG7w2>t!H4)9c-;S`gwm@ znzo8a@DLnDe9gtL0dy z3Q?=cN?oN*0IE`5_1kiy|K!h%h+fpfB`Js7@W`c~j+=|5I)9Vpfuhe%t)T zN;cA;@FBkLOmnt5by9ED)J|>EKmd=##HHE2!i$JJnaLl*8AjbiA+840=rMnLG<~Wk z_HEij%a8Z0Twm631y~EH&jsWtjCflfMg|y@FtVw|aBIGpfiBEuFwO4QaQw2eP_gsF za9)ocqj=7uJz{UQW?F@SS+neU*UGh_bZS$z=kP~2QZIY_$oD+i?>tmCR4JQh)7no{ zc&HF{hMxwF-9wr`s`4I&yhDEoO?_WjAA)0*HOv0`65lLgXxX;`ar($fW5vQ$Qgc5i zo8N-3YN(}J0Pt`o-Hp{tV+?_mj*T9d>y1YsgBW{bo~+m# zr-KGBaD6|wc&hG@dBR$wSfP@x#kQ|edE1xfspT)lSK-a@aqnj~#qxiAjX%>8Z~R%n z)cErfcqT;eY1i_J;lWP>np;SdJ9W00nYBw3)t>?G@<+n6fenVtV;fBNbs%1#R0fcJ z8{n~jmA!N}i@w4+bld>K+MMM#fYcDop2b7K_-Qj3N=NHEmJ8!y!n;}cGUV)zCQ&S4 z*k%XzvyeE><~2mP*7SdST`l%TQ=UcmG7SP~601ekc~omi&o-%Z7XiObE<(Di(*z|u z0%^My!Vhm?A(hU|>Fp-@-HYwN9~G zYVJ6IdEO6Krzh#Igfy(#r5BKUNTJ)PH+AC^;*P!GuFn#-vK@cN`|y6`tHLJIG=ux> zgh$FfYZyMKFLdqg&!=<8E>j;|KcV`WdvF0EW=oE#*7R^VrD=zwl)SSmHB%9pxpcT3 z+*!fshjYHWEUdm4vt`VdywYA;rH4(mlY~SVhc9q0wLx5NlEpSayLoItfch!`QunWH zv>h1^LaNv!h!pl)^`!Gdc;M4nBUuc!px@xR z?NZahMde@i%%)N#4lr@DMp(HhA8_QqSv|(9dWbQFvZ;BEn)4TrZnF&K_r7Z%Y?Qbc z%O%THp=gA*^IvJ{uz!uMPWi2K{y;Q;*-+R13|hE$?v8)QqnOrNI{IvLigoyLFkoKp zz}Qgb)tItS+XIv&wh6d&&5{(4Er?gc)!<$YlEGx~d9XGZyfW>EwO|$uqLd*%aEzcF zc=$NaUbg8w0>{ByZ`uVrxE>51wzf9l@9*HR9(-;e-8g@8VCWQuzB8KA#)v8~igUDI zkhY7o-EDs$NS{*ucy+Y#o%8-NAu5Wa{{o7mBRdM3w71pXe+!h~p{#!%-E=7F*=G{@ zAvGFWAw%fN9a_ESkrzhJ2wJ3h=mklc*-@U^cg>k$?!N^lhetQ<{g;C2d&V@Mxl8if z0(ag}w=Yuh>LG2f%=5{jmJJI zGk%#<Q3?T)sQALI-&p~AdmvF6u^H=AVTDKEdv(123 zv*i}SIRC94=R7`3^aUAC``b?yNXZu#4|L)z*2x9;dun>9r1q9tyx&DcC* zu}yy+P@fE5b%r-~eG+8puD5RZv-gF5Zf%M!++a*cwB(^Z2%~Y1sE|DCQwHoQX?V(a z?oyH|;QMwR-m|7-g3GIm;rYSg@T7NiB{!|>SvzeSNWsh!^~U2~FlN&mqQAj6>cK5e zu+{;37=vI;4^J7fF-g%wiFxXb5YGSX@BDuPwjK=z!3{g^lZK?yq29}w5%$=uHYHp8 za=n|U+bt8O#fk?y&^-o?&BM5uoen(2lz-zGeG7(plc$0YfI@p~>D^JY=>Ct~7 zgdeTEK~Q3Pkf&rnz(x3c1tUt0r}U(_T#8^-)?OVebCXk7xLlwQy{2}|@RH|koFlqm z*D1wR0VLq#mr^#Avm&-9j1=onwa;axH~QJ-aKuvoXJk!2!m7`n#jO&iiad2=;Qy1C zOkunW?(E3mRho_ss{!NK{A+Pn@MJIu_O=XzuyzV zeann=|Up1%5zS1d``^Q%9~pNRkd zz?N)2-?7!2uV%jE*t>bKu6ukL>P?bV-O{lWV4f1m## zU(@Gr#N|z1O#4==xewWo&(`j2ZDvf0%97GrHp;O@9yj zb~|S8X4@Ty8ksNWY`I)-mP>cNWpG00^Q}v_6AjRyJU|g&ZlD_R*YF*-+vzf{U?}KqIteuCrclptR5ZIrFD$=y5~HCsumoZotCd zT$b{I-)!gaZ0@ZWf3rFF+|_)xg5#U-)~@YrJTTNaea~?EfF1k7N}p~`#}lh+*z(fH(>=W4`dg6xnxi(=If2Sh6;71Vdv(9 zv|PH5=qk)T=B}I-Gzd0)SaQ+t@f?mVd@ZxF>TC(!s>Q-)f14$PLNVvF<-%R@-Ds-o|yDoy+XSZUMF1oVlK}CcC*TBO{TZW>$8aw|QoIPi2Lx!9~KX1EUEk&{4ZlP(Pubt%# zN*~=YJ`76ve|ouKo4L>D?!sQJp|*6lKJ+CPkb}0+B+|n=NdYPj{Wq+a-e?u-oh|0jkytt42nV~{xC`cO9kSU}E9)<} z^Nr^^P{`M=XWMfJQg!aHeaC~!Y=>;-53jLkN?*^>L7zoi#CIb?lKGd?Ki>&3!f`t!wdw^@0c z8HawL2Ls9N0xD?^U3wkMj1O`rPTu#oAx3{rPSQ?K$L2XaQk7OE%o|EaOjuZu@HP`H=sYYd&*i zRpu{NP^BPew!_}?it^*W zfA8kbH**ID1TJ*;){D)~hmq@Yy%vz=6K=ptcmv%WMaoE*R@L>_I&AV*w&*L zx!}O|gQVO-tqjH5hOVR!137QE**dG$4u*Lf7m5XTpxkjA)+SJ@M1On(-J+el6E;vM zZ=eN&^9TbN>c94WVwBllL?l>#9okKT}?Dwy9ICZ%LNf=H+>E6N^)rF>K%VDGpIb^Zk&e3E4 z#w_$kX2D#4WiNc+X7k;OJF_hp)4*#uiQZ;23?@{W7^H))<;H~`oydS27!N@0;HuiG6 zfJW7aLGfbetz76}(g%(a&mQCC>mX;sSaG}apiAV=Vc@gb!a#DhvF$aSI2fGJk1lqD z?O+hH-m&$1w_C5-5)NnWKz8BY45~C6#^gJCBNrdtu?ZUwDv&vJ4Sep3;XVu_H;a|1 z&s-0VZ$@tk;v}24v=Ry zcVL_k<8a%Zc`N9Rtwo1y>AJhcd_}KWj&76<+_un-U2NBLd$+Zrnd2MV-ORQtmv1;! zIvUd&M>iRqy}9o~XA-ItcfI3myMg}6*7jWvqgLn{E$FS!aX(h@NH#NPX|L9hX3#a6 zFPDxFhYA^G;VwD%=_ANvoCZ&W8Vm*>(EV92cJ9J<*=i2ME2zxae6#Tu&RWB5I0+2> z64912ZaXU|443;;3MBytmmyRNP=Cb5ZRjfdTYJNxF55!S2u3C=XFl7`=-rfbIK2Q( z9CYs-s2N>*2M&DBVN_s4lMWq*8)y9Kuw3mD!z+-KaMdC+5kk(>jg zf3~6zQ`3h-JnZm6a;@jkFZXsZyxA@wUoJNO)}PHicgE-Rb}o(GuY7o|$A5-;k+C^c zlhA_mwae{|yIV6?TrimVYkDzA;g9*?RC$3|!A>|y#q1(qcHdM?W+d>zYYb0hI z4rYcH&>z~a7Ms<^oB4dPT5VupzT>{LooyhRUINnNusT`HZI?sJt>*4_x!%p8r|B`M zNuViOZ9R=#`FofqgORES{eMX))6APeM{ftY(cXFPlKGx3uKw#}lhosUkSmuqo9!HT zx!giKH)k_v=R?111E+5T{Ue9oo~G%;aLfy0yW_=)uz zXU#IGo5wCoz!1cT9>Z)qcOA!u+~MrRr7~#3w;H2@iHn`kzY>??wk@0W&gWt#LtLD* zw_AVVY(!C{`#r{SIB0fe+=s67db8O=mwmUeq4lxZ7XE>k8&(Qnf7|dX;9?2?K}$Aw zy^Sqqh8)oiV$kp`+|_nNF91(o;19;(i`8!DFV;I7h8t@b0jzvy4gD^@hStZ1{t?}6 zIKQxgN^vn?cre;$e6iTfR&ywOP{x-#+l4`^j#n~VYa^E4xtpcyvz_h15Z_sCZKzZ> zi-osi+Y_tj&e=V)f8nt~?F(%*45*x~yMk79&ADf9pm)Aq`Tk7f^5!!eW{i${OuM|@FD)PAt#o)`AU$}FKzq2I!^5spMa`8Hz0!>KG zby2Ofh3|OsEpY2YS*Zjcj&Z~zF#IP}XjP<*io9>1f3(FC6?>b+E)2S8$nS&5Yfd@N z_fNGj#& z!-V2`D<;h=(fMxjr#F$8un)iyT=ERQi))Z+@M}?NR?^ey^*5-y?_DU8tdg8f{YIIEcZw5mJ-W;saBD=fVRZt$Kr2=%rtdN=3b65et~-BI9(r& zM!tK>cqAqut|F+;!>|dTK54D+H=_E4nxJ&NsUE4H)w{9|4wf;l8aheavZCS zsojk+L?Z8wnIJgd+o3@`R%#ZLVxq%*7U6vFNiRjxLaVtA3PUv3CDX$ZgH;m2y}2@d zf3hHBI*FQjwa_AQbo!fm7`~JuQuKPRx+IkxiKg2R)Lea+>gUDpln)TVryTM|I>$!wf2QkyFHdY_FNej;d*e8Pe+Vxs4)~ zacsP-ixos}n0s7wjd>#Y6mz!9U|g4tSHeJ7Dr4DBjr4W#SgHLw1986+r=DCAe^OIT zD43m^lc1%AFBC2Jm_zqH5q)?msRVO+rh|s#mYUX+lzjbAXd-!96DXP(Vga0@`S@%M z)qi+-XNWK{ts`%K{J@T56FP4)7@0VEhTch|*;gRVawoNFq5id?<}6foiT5*4L=}*p zxSCZa_aLONelo%3%cbaKLhk}~f90$liL$(ZhW^~sJ8`oe&aoAE%CMWGKd{VwcoT+j zGV(AxpPW_hwYq_L!(W2z;l}qOLtUC(R1QT7V?&nE>>F$%&RX_t=25cXRW21Q2!D!oePhvPH^2*JT zPuD*uyoG{Q384L}X~**W;v)s4h_pI7IyCUx*aS_ZL#DaR4~J({2{aTVa}}>pi3c#M zde&g-3Xyq!dc2PJfy+Yee?;mjX%O8$Jg0_`x>97OkD{z<^=F)6LjZF5-A#hFA zR0Az7Dr2?PP>js=o55;gpoOOTm>(RT-1z19ALHyj{AqfX@Cl{~f2nDt^OK|(58VBl zeh8xAkRR^z<1tRMdU9ow5i>t(owU$mkH7JR?Rhb=e;pT_tr~(ZwXL?a4(wI*jfH{P zl5@vY+fbV!XNm zYCbHA;_NM#v+z+C$WI+m#>AniW5@S|K>EV&W}Nu!j9Ooa-e| z-6U|ZroAwn=UpBl?V1QhCy^xeny8<6cpR+|dtM^Q>cpVje}2q)nwE30pQ9kVW!Xdd zouYU7YilS#1G$%%#V&({hS3j4LHx|ZoI?-xTi_LQcXAAI zeg-XB4?SyvjVfuO6`9~7PqX+SCNA@gIUyIBLJ#!3t`2scY4pzXP(}x;)0`H+(N4!R zntHfT(DUDme+8zRhyxu2R-Uktk7^+0kGr3=y{CJMstA~_V2|Wol!-w$r03Y>rV{`% zP%P*?ajogBZCPq5&Sj{Ec~KZC-bJL2HT?UPCzIDS&l9u-C?M5p$8yLk3KNc_5U^VD z1~AIyks2VyCmodHRikz&fkt!;W05M3X*!Ksd3MZI+AHbS3BvhZ-Kd&e z-5`}Cfcf&}LmHHK1*rOnII9lBnLN2q`rK{Pvtp@he5aZ$T1A2YJWv+dK$8QK0zK*?w9p&}zr&xr!S%!f)r# z+mw41kEghZ^U(VkR|?dmI3c6WR8CyHIR<~{XB+PmP#qmSRVSQs!bSzuIKD}O)<~q7 zf3Ai%zc8_|DM%mAUj>vZ))^54Jogz(6fR1h#3?l}H1g##NRLIWIru`2rx(=!tOa!c z9JxlIMuae6;+fC^3&p(s1xq<3w^-pHa^;hDLV(C|p9dL7=j9UunjEM+JROgr_)uJa z5{)DXluO=J5hjAM{!vzjqEE$CG?qYofAM3n+XSU{J1L>fg31-A6euJjdj-*+oFv0| zJql7{48k!C_qkInwkSq2LDYPqIJ7TdnlNizh71+7s)Do}1zyMdJx`jS;Tcs_>B#+j z8tu)2D{GVSL(Zbl$2UF<=zDpr%H=u-fKmTnIRtV(CzwzVNPeY}>b-a>#!D2%e-|u> z3ewb*uP#l6f4Ms3#cL2{18VAH4RjBrEY_w^z-if+h1N}aC3QoGP~5N%ouiKqdM>}K|3wasMxf5-I99v(p@IJJqHHK|FaybbexpmL|n6jC9e>-_(N=1kp&e1_8Pq>xZJfKOK&cf~t4c zw4A$vO1`o_cES^zb#=^oe?M2UD7xzPqOIcNIiuoNRwoAKb}80)6~zSM*NZ|qzUN-i zrA0aRqHvDb!=oNq9i})s8rWgRM3w80LH1Mbyb!UFDyLBk6 z5djj&$5<}bx{8F_r&vxVoLzs_MH!Vq!Tgkor;Uhz(fLmVS=~s2e|5QHM|`;BVm|`8 zt_cS*rGdoBj-tn$9wC3Jo(BV~mA2`|C`#{C%IK`FuoFXf!?k~7p*ZjS zaA3(Zx}F`xQC!hQe{2wkauqj&qYtzjq~!O3XG!3uV#}7$%|n&ZP8nh~5lAQ1K}>Cg z8n@Iw#du@nijJ!9q<|p~#o}`o2UC`6s`3r~v=0K2zCrXM4dh;L?-}IPvvVM|Z$FUi zd%ir4cw);FHPh+kwR`Bhi4keB(y?BwT#BkPoL0dRePYR;e`m$+QSg^y8*i?>-AILW zMn;WE9*!6ccT~o!j6^)7)g1)#NN3~9ATeac{uD$Gma_+_IyHgH-T!O$t zF~_8wabk@}BMFiqdpPhcaOE>+gT1^*NSUCHwwhoQ0PlX!S*S%J73e5$ zgX}R#`J3|>a7HMaU~PbpG38`5!P)>fYK39c{{~wehW5WI7RFKkU(w~U1#rpTgcA!x z9jjpD!8}mj9Cg(E-Ba-h-9Wwdf9WE01?V7G5j_Xgv2=SFnW*(# zd)6{e)0Ud`nqUop*dyDQp<3p7NK5u2Qo}kA$;VxWYMEz&@}5NF2rU6R$Sp1PZ?%$M zL{rngj@7V_AIa`zDBb){tSu4u->^dvDvfM<2wed>$o)g$XV=`PRJV1kru|*8e<1tI zU>v~PN;npGL4BPk%v|`D6+{0Z*4WWeOk=D?{z`W*Zs+(|?hCv)7Nj4B81AgTDxSY}}M=b=dmWV}Y zqNi|L8Kd>RCf~TIap3yQya@T2x|u^jcN`~RiJiwOtbZ!Qn@i0RMYE_ckONLhn}Nsn z(CR-t&p{eEL8!24 ze+4yAvwud!^Z|1x3|u30JtY8YK$X87+K)UdlKdiMX{xgKdqpygL_3%7k*=*Moa5C# zl8<4=WYKmE#SK~Wc7l+8#p8pphMg#!<8>S##p4xzc~E#lPGu;9tTKjT_dZUPXN9Df z2p}49=02d!WDvzrCJD~22*H^lGYBbXly5Ge`@dIQC)t1Us={cVsN&rTBKaYfg0>9N zi$PnCYR@a^86uuj(Dzf_T)gLq+ETps{3sqYAU*`xb(pc(-eM#e>mMJHC8QOC^vVxT z`zbobXRNynvPLy%IQ6Qvs|d=W`gt!&`r$N)df^leq90C!xQY0G@gzpgRhIzmP@MVA zvD%WRSjB&O5wnn|=O6P}0aWo;H=GLb78-Ry#!tfdITm@2%@k=)%D0 z628lxwQ$-ZRG|AKlvxkI`oD(h3+RDB4T@O^)uVqXqxBH(_#ytLK84pqD5I$epLh~6 z^^Rq2UdEAaACmYHUo?v_oGD~lU);kSq{?}%6@v4+gI>T>)7837_+CEGO4V4#TZ3>C zL>*l`QA>H9Yr)Wu)Kwjtre)q%CG#n)sHuXfg9FO!BEEeHInRIz71pdD=}#X0#uMN zjyRQ}6-%|3{Z3i)N7yE^#u(8c;#4!@qU%GX8Id5u$ddmip%$KAI2EGqn^H0Q0z{De z2WS;M@k}lv$Up!KlI2Mx*CLiR3bIq#60m>T@fsL%M&Kjgqb{$vIXVJ5AgxSK;%LQd zV3ZRyIw{hV(17{KA92g}+8A}P2EeC>0MXxQyhWUbtz0&XT5H@kZ=!JsV)GF()M74A zAA+N*wFtB7D5T|cl(DCGNuoZ%+6uvWeU2Uzc5KERRe>qKM^5t=LDoqv8eZ`#Yqx*m zLAZbC&!Wafl1<4NfXbtR>T`h4fqZ8A$x>*T!TGA2FhW5aMQuOpX%NJw)+aGS^_Fe~ zBE+_MBM73ul%$AW&XA*)FbAVqmb-sC=CHI%bz8+8l5Y9#2^j>_D(M{=Z7Aj4qefY9 zyGKnRd|(_olQj6IOH=D;W8E_4dyR)I5UdSw$Gu$rV)Kxp zh&O<744EE>6fgy1AgA<|44{1zHIojJ6wn5_4+EW3CByY0j+zulBN(4OtucRy3^xOz z*>h<$%;4yD4_YGnK!JW=v(Ye!qkGN*v)#=`Py6fzhI@CPqu_V-dBG7N8Ly2Y=NC14 zbVa-lM!EWkgiyxn*k8NvgG7C$M9032)w0i$K>4~!*IY#ESl^MY?{uy2v*aq#=pnV@ zH8G%5!_^lF_92RBeFU9^FwlQdlq%oo0N*st?;mpCSHIV#4^W0{LVSwlPD50PGF%(t z^YN$yA;YyGa&aw$1|UOq%s)|Uq)(a^(r1lU;In=!@Y($(PCQyOT*e~pvmk6Pp~*)4 zQ!G}!wk|*_(}0$BT1pA-_TgCEPE%~pu69389b`2zST}hf+!MFCsM~+Fg0Oxf=2ODt z*j4pLr^a|J8cXmwI>Ni+X|?C;-Nw5chjkS<)5_c@S4)+j)XmEPs~t^7cn=x$`5!q8 z13%zieXs2Y76nJO$GHr_&TE>+C8yzOJu+r-pY5A4l%)fHmNrjJyyMK{37J?~S`%Ir zucl@!mTVP&AwvsEYgB*H2&-Hd5JY4_#CffPFC|gyLTla4j7&SCzf% z=NFMn%#@NInl6w&#>Y4kN=_&fJuMTQOm$L@3<+Ow@nE1R;wlfX8e;VXOo5P-X87YemD){D)RUf z_sZ|za;DNqbwS1?s4z|LR(ts10HrUW4?;RQLjf8{)yP&)zNN5?YS3_?ie%8*hdTLo zRD+14k!uZPSFL|kpdbDH0}sQC_;6s6C!W+?JReV?i7N@F;*}_xRuM)qQ5-!V;yjfD zyyh?GK$>4#Qxa$vI)b*d*lCLHK8!{a6tiIj^KKy8SA8F}mM3z{GqE2{p152*+dR#9 zR6fPqkCTIVctY_cWid1CCV_Ll6jpLprDmNFLjr!_hoYByZ3-O$Zmet-U&&%NTc9rzt*hhGvVE=7sIxMA*bIdS9i z<9It*xCE65yput%gCgZGHvCw}A#1odq`7Rsu`or`|>*px933|Wz?y3$x@4nDI%u7*i!ZNZSLMp|DBrZ) z%Rtr_>I~D?x-{&nMt+<7K2NxJFMG{mHG|rXjD6a&CZ3YhgRI_NJaG3bnXRW{2I*s* zy%$fR(PXM*3_x-36ZC(?x$1cF6j)D64^B4H<;xvELMu%y#_dMm8p@fYJlj!0Vw&io zoZ=Lt-8UZnoR6T^l4fa(nOum0;MgGYP}eNCsL(E1#xx68kGijFgjq~S1>d0ro5nsR zY=qo6@r#p+C1X_$ermvoM;=u+$}UQ{NEjoym6$O?S*OFV-{ybNWM>8{;we!*Vlh0p z6T8w}u+UXoHaS5#qNIl=7W34i8Yg<7qlX3M@ab9hE{HshfF4NEQ!Q2_*2hO=8r9On zYv0KRK&I+%25>ui#yCI5&5DontEy} zf?*2LFK}IQj7#j@jJS%0gtg3G&uSe&apj>}dGSwn2HqEYj&5QtV>>}ELzDyRwxn)Y#2y&GehM6a2jX-~l#kKpY8NsX~Ie|PO zss;Q$fB}C;q6^ql(IP6}s4r<61L}$xhE_ z^e@$4nm{+O#%O}wWOu0xUruk8-=FJ!sFR=2HNt-_2HM5H<+fOQ2`z-Iwwe*hUwa)d z#HJ%BX;0|B2zS+dlBS%_u=lh{{6%b9mhihgx{1Q)vXVl=o|2-liHD0`-h7Y~LpYRn zB*nS&@!b;)cFV({tbaQrrp@>1`G}p%8OBp6&h;)&04R1U|CYwlz5BoqOcpRP>kvRQ z3hjReOL_CfWY6|rd71^0_>B`kTK@vI*Qu0~NR7JH61TeA1h{f9k)q9c5yUYE66j0e z8G$;rI@SoC!ZO)O%y&_Kc&YU3Y7^kjjYCOPXS>|fIPxyLmrAX^Isx!wesFm5Qh z@w?fJBlm3dnCrJM)Xp^6LnkWv3uWJ~HUaK)bC}SU#)2k)zN_EEJQVTb^am%0dvZO3R{ehUlO(FKm{%S@{)g` zJqJC|58Mlws3cyVcxXjNmy2^gC&7zC4@}Uw;_FN9#vb$_UIca20F7B~o}qFt0~vMF z1dp3T9esG24BOX6!+nktIMDE$*if_8h`b2wIWIhX65L6}mjWKqM??NB3a6YTeG$eH zc{Ri8rFZE?=BXLojye=q~=<@-UH?MYGb5#M~*;XuqQUI ztH#vI{|1T1R1rKd@Zv83)R$Ezk`IwDg41T5Tm798Jgc#=1`b5hi#!R9!wFF$k663> zBNuZ&nYci09IdBMq`XadIsB8)(=txk(Xw^UMPP=lC5Xi^T3UbGifSNb zD{i9ot)-@&ubEsLbIE<4B%`;jlvm4GbYOuMvT6lZ6>(Pj>TnRFr))aY4Ycc!^Ws%r zODV_DL@ON5P2?r)15}p5CC|89JPxIPKWQ3^u!H3Wuf6i8#rnuPlInQAFrT$nD5>KN zP2+YE;O(s@m|%Q7{>+~#32uK?p#;;%RIFo_>vSl_t#E?*_dMaZ!I6jJPAZChM*t7- zmK~fpCKwli1j8V6fabPwKp@2qYMa z8+9Inu?NDRwJbv^rV+H9d7P&rl;Yfq$J<{faYRXD8Hcy~G01+(oi~5()Uv5_ww-vA z{WWuFz7U8v{2PzH2Bae`Bk`8SOzThi^o6Bq(>fM!`-!u|#rWpn=Ul5$f@#9O1(eh+ z0`Z2w@ML21v~!MSB+l|(H1;6XlU5Ld^k^mnFM^M8R{Vu4%v(ZNz#s;cD;XXo+xzg{qmOcG2|E>f8z>HOI3{ zj)ulR@$d-4WKH8z1!MfBczT1pKCS6)HA)16-;B8bhI78;ZphBud8cUKlEN{_WpgZ@ zZuS)cDjmGLcG61`obUTQlHG>u;H&nLx3y>#+9^;A;r#3VxHf-4ql6$KMN!jJtMJK>M?oujfJ`5 zCG@il)0!lx6O(_ENR(4^lr4aFNkaFO!Rj_YvB(>LfQY(Vsev|a?p}%ZCIGBPj==Ki zA&DPNkyK(z9I_V>u@H)0;QQ}FPHx^RC94u5_|r2($6YZ$G~Tx`&@7(%%OAxOtE8~Jog z9jlhXc*~PfM2hK>H(8bhPM-1VD?Ox+x-}5j0KJG=$W#9A_nd{DKbZucG|>PTL(dlj z9*FCJJ{`lr4YC_IW8sUyju~hGzYqCS0976Iz>52XUIKd3LKdrxajGfv`HRtx8fXC@coMkR;?bHcyyr(I7rwp>`bjH| zgSg|&i=*)Q#ZrCLKnqx`MthOwxF@Xv`C_SwPen1cCRaf|k!KEC5^9zj9d+fdxcFhU z$VkVm(oiiXKkgr~R~q2(w9kbWXhC+zt$IK1aDc+|GH zI&w6atBgL&-UAU*Gzh(O-wl9DOqvFJ6BJU1Xn&(u1+@TfFf~vY zL9UU13{w7P^g*sf9IFx4C%e(FJ_cYngc^UP&-JTb`#lc!E2`!0lNB@PdPABXS0$-M z6}e1nv@u{3f*M4Z!So7UJPxR7uzU!joV=iOghuM=@X(iejnODB_nKhIr*9`Fu;eH1 zBRi}si@C%lb1+(3P%CPmymi2q!IEp1yZUJS&DlKOtF+|M3&E&MSBWK4*UFg zOn7Qw4Azmu!+c|xoO=pbf5;yVq=8VuTbH-|nM{eHCK;>R{>Mdv*5&+bDW&l7450G#(2_SVS_GS)W>JaP$BcsqlhhT5COz4$``v)F|@19I#hFS^_ zA@;;F)TL>(h!}=X&xj}*?336Y87-lX% z)lz7PpIH(xBa?ZR5*p#30S~?RNo?Sjl3I!eVIWHuItY6cyMju4^p>E7e{l`f4>T`Z zH8L1)ai?+0CARi$WPLFNha4`vN%S&cC4%r3H;QU`3IU{_$Z=u#{EwW4;&kaPq!5Bu zR}YPI$Mv?ZYCtL_R15;Ji%Ls7_qBx({A_DYUFoiU9F0a@jG}%=jfmrKN#UTw#IV=w0OO0X3=wv}<#x>6(0+K9@#)3L^mu zmuh_qLJ;n=gJz8m0!Y6vU*0C1ebtw|eF|y;50@u?3Y1@cxHjNlYY{MXpHtVyKs~9h zjd9H!uD6Uq5=a@exv7a2K|q^JDKKKaTf++f7;`UJVXXVqy2c&#+`2IY^C)DbJD%l< ziH52aLIV_QV1CxUiX{+gDI$b{R49e;0FRd%e+nlM`SKeEy6o-E_c=O1_ePJr+uV*v}Mw-ge0>w}Us+&;{j&NL*LsC8( zu?8EN-J6hUgL~#f?Rm*E{wX-IUO#&fkB1JT{eig;vigKLS$S8Xsuov=L!OUmGY~})iG@*@V}S}n7Fx*9BXWZ@PBTzNF+Fj^ zIBh`;iMS<~yMYQVD6q(E%QO(h5dFwA@d$CFKz&UV&%x}OYU`mmqWriwOVUxqu>8c* z2bU0n3LF75mo0({JOP`RYJv(JM;}-a%F9F?xBJYK50k|>yG4VdwCdDdbH45v(26NB@SXOD66)o9}MH8DIlm(79-CjqyY^@0jF z3O7hKO45B*mKNIrgar@EXVJLQCfm168h?iX%VR=ZUWZDaq|4m_X9V8L^Vr{A{Hkc zz)hYV^Q^fuPu51omv8gnx`lV{>>Dh`T8C+;Zk+gHI>9ZSTxxcc(t#~^#ioi}o`%R7FIlk8O1 z>7iU)S!3~3f1Efxl|}mA;@4y+nQYfF^NL&CTOSpw!vRSv+!_}%1zO(Q-ua#kIwocY zwA?<#1m>8O9%TInOJr#lx0d}e9^NdJZql#qY)J=jTbiO*nr0Q!-ercqvaU}zY&3g(~^VTQ|zU+@O=@$1k zoVbHYFRi)?29Q3mLJfyKSOo8*45K-DSb%9lIUqX)Ea0-F#M&-Nj$=JNgU+OQSl1-ImDij zKHzn{4;0q8OoMd=^npGEX&OX(IUv^I8r9Lqs~^{5qSQ`{>4V`;idMpyOp|{b+Mn6cc;Eii2IGjbR2xrfErQJMx*0sA{2`*?)W}Pv*fw|SsAAr*850Ci}v-} z9m*YEQvy^TF`}!=9ByDJe{HoQ^$>{HiwX)O7l$g4;y0AUXonIZ%EdYA6E{@=*)NsX znOa$?_zD3aer|sa1T=xlEZ(f=reRIUn1RzmG6WKd8^nX+kHyU)>3!~s$!|Z$RW$R|LXVFn20WzDF1gX+H*~|2_0=b$i5Fo_$GvO0ilG2xyS30r-^x5P8U`* zoS&YLx@kEsV*(CF78(560N<#R3B-sUOr+mXMi)+O7(qsA2kU}-$ipmv0lj$kiDpVo zOX)(2exN4YP(l~#j=Oo12H%?UPllV8(uKSaz8imOF(!1h@!}+tmz2p|Jpo;ypWXCI z_EbF01e+3~0p1@&Q4hh7V^xw?2+p%y@Toh?b1Y;GPVtO^k*5KMcxL7R#vqZm)D6*e zZmAmsD!+TrAcG)=Fhj6$A!C5Wg(4$}11V#WVh=;H=)wTxKuRAHJ^3_*)0=r}K|w1g zD{Ftnk!nNI4J7)@r9#D3b!F>T4AJ%W;YdF4kytuK`5t3lhEP3&BTt)6eC0=Vckyeh z6RU?IU+}G0!O;!Y1Nj^UPn5K%(fi3!{1K^^;2y zbKT?-EOIY-0B5F?Jc5Ysrwq{ax+xVB{3?_~aG;C!VURx5->4$h0ajl@8|i(*BUgv0 zC!h^fzeQ*GhH0ol!xGbCxZ>YL&>Zi>yjVj1CUt|L{G@7L{@iNEYGRac(C4B;>BoQ5 za7e9>Myn&9TU4*vkq-h<-az*mLR-7%Mzq~?3joEt(4{5i-t)rcUFtGroASpbpVmcB zfK{)T3*+W0XFFIEgwVS7Xms1w0g`;E0y%NI(V8ge7PJSW*M1f_S5bKKF+6SO;*bH#t7f&i-(L^1vxaZDkve@^id|Ek%DUn)67augw- z5S@Gr-0qVw?)dL{knr<0b6Nzyb}PNsBQYuweH`(W5f?siul%bP*FcR3c*j$YxP@hi z)D<97ly9zMxyOOpV$&hYh>9K$jL*LX9;%Zw1vQY;Bdbrp3APb2Q*@fAvL}BuP4x?R z4)J%EWTJlza`o$^_hS`dG5JIJjG!V0WrH5?jvC{~x+5qbf~NrKD?|DwVn1fYBz_z| z`#~7K29?c1)CX~%xIBg4Hk>`HBi48NDE1@@gYPO6)s+qOoWs{q9XK#-H2ZG1564gO zSB^WR?QGys>GbuB0fo};A!mOa8l{0pRs3#C1t^Hw^O2V?>c+14xg~=XJfLELe}7Ea z@qr(B^A361_GOq=#VcDkXSMyFo@=Ia$q2#+CoRXD)jM_LLm6RJp$dMtq9m0s*zzZX z)I7Gc@&%h+Wf01PRPLtA+2`m1#?2x3KCsMvkULoG7Pt|~zN_qG8!TzQgE$z&T`8fcfOiAvxT#9 z7T$WjwVjzevz^^~`IkYD3KW0*z>ZXtD!x2*;=lj-_g7IKhX4Mmb%y@(7x}|K6%_yT z!~gv7{{fYjT~FIE6o&8nD{_HUkQO|NAtr5XLxpagU{vZPHYrl&I;X9{u`SyL!mr

`Kw;)UXPH3uACBz=2LCWhhw~(d|QA7LmhwQ$*fEUs?f@U z>GcjCLFUR_a+91VIX99PaM=EzPKTrGtLgOU=u_`tMlJj=+j#ML&wyJQnNVYBdDu(v zuRke^xsqj;jg=_pTnM~c>W}ZUte>2JX{4`4aGdmstvy6HmQ;I3|L9!^d3Lfd^6Vsp zyqQ^NxLoW-EgDk@Jd%G7e}5@cP{Cio>=nS#oXWL#cg}Z1^%4r$KV{K4Lm2~C>iy8n zJJ!gNoCCv#%(6R}73zf=mt_|g+tP)oPpz2HN=vL^TbSzs50rF%U8)q&a8<%rE1yj`g~~ zWw>LDWx7_u-ohP(2(=)nB`EEp_*q6VG+1}fVy&=a-j2BjfzN}5pt7Kx=tkN_TIw-1 zHasNBA2=hpA*6r0()wbMwQ~#gR_2D@;0yChaClDz@ye?U!g!iD>W;x)V~N6ZrhaGP zbsdbKR>=v&Wt)aT_bcnTG+2X~dLsAeNo{5FRI*`g38=5Ql3Df}tQ+F1!ILr%)wiB# zV4+;zn*G=%4~ADWMY+r-$KFo zz|L~N%DH-WAT3^wq;*t?*f3~)7}pqghh6wH3T|g_zGzGyZLFz7@4WTKf6vz$?OC#F z?5)Nj&y8Q8^=hCD4Ae^Qm>+X*AWW}t%Qk-Bt{ffo_WYY=e{z_u7C)%WcYJu(Sjcnb zNSC!`XTT(wnc!Ns=4upn(r}r(y##;i@)Ptl3`8+Dyb#soK5dzJM*j!5Qj!WZ8W#LsE?WkV8=3tsmIi2eio+OPiVxEwmHzD2brWTR zNK(PkaA6*~b!!plTS#)Y^LX-R(QXfI zwma=MT3SMl07A+kaO{(ltJA{DcJ-OlD4GewZ<8chHp$|UGQhz7D1bnJIXph1 z#&gF`RTkZT^(0?&nMx^5r`H=wFP|`m6|{=3GI!>cG2b!4Un6+8t8S7uq=eB2Jv{Qe zQlT_Kz$DZ-m@#omVpV~Kd@{Q+iEAUG)T+R#iclEp2S)YioQ_)Sm}Er~@H z=#qOoHr%0>K#6>KOuT%V0QhhJzPs6d_^^cy?RS9m@gLhlI8y%WhYtgdx5M@$3#M8!U;Q;$cd)1ZGaR3Jbf7{5ZSnDG zV@hOVG+7B_gC{}C8*j2GL_(6JM@qg7^xwDLKpWbQFX_R4-EI3!>-F_-`+jR@nNU~!?}UlN=mI8AU^Ekv zM1hoL0xt^%;Uffpt+Er*6Iyg7N2Q(2XNf4V-aj(2+4XxGu6H=l91Zg6eLo%jX%-${ zxOL(>Yo)T67L5i8s2%!3O4R*0f5nE3Zh>GtdD2DW)k!yE;Ak^;Sqf>#h) z$slw9A$knSAtYfb0p$#toJz@&VFjV0!#o+e$8qSkbbSDqE3pa+e>zps!{~xFF%6}a z5-BnkBxz-e&a<|bOfqQ$tgA+NsZfU~6V56`>GE)Yjl0_w_5<;k+wC|X9fBu+8Xbqx z1(ck@(#i=Z6HLN@P(=kHi%v2|YYQrkL75VT45>IXA0`h#Ht>x~x1LoC&ZiUcaTr}p z#t}m+36|3ZiCnbjf7x=vO%jr}maG$wm9pj)2w95xz*zUcAJqB?@R5SEe{}$}TeEM; z&wgJVVExOd&-F=fXuaw1=9+EJ?Y0|N_4!w@XL*`W(t2_k>V?bjEkv!H2ag%07seCQ zuL?+KjZz>@k=Zf(D09>?&2s+3^+4K>1K_x-zM%~4i+=Bie{UzMa#1p zU9*UVs4OXwrOlG_TC^zzi!q~!6uhk#N4Ph5J1*EC(2#8g(yo5r&el|5iK)OkzRrri zkF?!C+R}FBrr@>GRifuS2qs!EDhr2F3GzNkUfYR?<1Sclazh&Yf#*1l)#Dsm=#rCk z$y2(XyvJ&{f4=?NT}agwv}US`7HphzDVP&-y@Ap3Piz*0LQGtO$Sj~V_{Qgj2(E84 zF&ci;>U%iv9BK}*lbON3%Q~Eb)Jl;+^e%HO`Iuuh)!vXdCbH!QEu@Z7n3RjZjH0Jn z?f+eA+DZZEk^PRaU3;3n!(#1u4Xu?X&nqV(Vn8pYf3eXk$PUO#&uSBuiA6>&Jj~Pd z+wFerwgYtA^k^{K*JyyKf!VfL-li*v~JcJI>X1Vj(>YFW}+?NVB|BacC{*VtffPd(bSf zt^{pm^dJ(~C0vo5_u>gQo*IhMcc&SF<3}lLLUKw| zkO+=ri}SHWOG3qBu=d0X*XI{9RcEytXy32z<};AIa+6I$w{V4>2h?oeIQ1wigV$P1 z1w~fv)j}A-f^4kTAqJVLMRN}R@p?D(f4dvPS$}dTYxbQqD9aiVCqP=MNC~soK_o$m zotcwdHA^F6PCn_7P|NHh$jhl%J+_Z#DXG$O8YYL)cO>Kpr`g4_KjCy_E$fVDzm^~- z)*lqnX|N_b;jCxB-$cv^Kh;-|ldeThxt5>kE4&4)S!W!w`eM!794#){paaChe_F#o z1@Jj&6NHt`EIs~zo*6x1Vh*DVgXTGi=DcJjSXtP{$6&1wwxk?_CLg^Eb+;0uOWu}C zS!i8D7i`WwJ@Z8c^Ep_}9*f&R?==KaV1XhDDOhWXH8-P1Vd^CYZI;8}JqX6koJoBp3LjE#E> zl@&i3QvR2)b%L*X?Zp(>Crc~XJA=~&0fa?XY9%$KA}AtDw{2mp2KAw`tvzY}!gGhO zvzuM99tAkfU=PE~)aVSLR&F$x*_ybxmRwN?ypELM+%M@T3HAVYqBwD1D8jFOP39}3LIAK z$jF5qnMowAgcwuZn&)E3lTnaSXyXO?%-@mHiz@;E!&P$<&Rld{!Aii&fc~dz)rBXJa2XCWhUn{{Q>2TRf zs)_7-H_rCIYg|m7r5DQ*%@mSWK74IFS+ZLD7=^%E?`Y+d;({nRpE%7^$zk5%|3Hzu zQd%P8)YF)S1ODiV=A+Yxc%c&THGfo*p>`tAsfF`&CD!BBwACRWY>Sp;53Y}i1NQiSt&Fn$2(({F_1inh0#wwB|sUOuOQ zno}=EUNwJcWKvOp_EJ@LEGtY195&g9Vl4Xk&9W0Pk4FXO$@w*Xwm0y!a+6HqI+{{W z#nqOquvv2WAhDqh*%vYqC6jXjHv{4AVUnxbY<6-0cq9mY8ZE~Zj67PYv!M7j(#`InS#`;$Hf?!F zDx@IT;YM$DLXqp?ppdhSaEXmO&gKuk6Zo8x!=E>=A*FQ+hU;PDEL8VmeckBb5pOw3 zWg)W5aNfq9a?pI3Zpzo|ck}g^9;ZWxQYfX_yG6nJs-zcEhFT(fXUKS6T&B>Fhx#(& zKrnv}lNZ0Hn`wTsndX;qF#)8xdE#7%P6Qhq1QBE+9iukNTZ`JU!p5TO;oEsO?l-01 z-q)V-zMsDZcxPEStY8&`T_>ohfpap1qxEdQY=f0hJ;jvePgd@f{kr% zIJ;lxeA;q6jJ^vK2N10+#N@OnRWFLBL>{v?4wd&HxfV`BD6WhlH{1z&0`PRRG!1`U zoHH7Dj6Ng>p-#Yt7}8bhw~@nW_a56 z!-j$Uvq5wISf-uwhuk`Q2s3i47*z{N8f;j%I|sPp?A=h$g~QUHG~s}8XY zb9HE>ltKzJ!3PVxz#NB>=H&-J$x9F|y!dHe{JZlKMEkx6xKebH(Z-a71dbNw$8p9g ziq{qYQzb`zfzx{dME<#Wk?p()Z-nMA7zi9G%20xjhB>nJl41d?>UZr4edv+)^JT%W z^?Xk#T4}JnICLo`kftbub{u~sDeF+Immyh~bIPR31&L`-!(E5;rzw<9@w9TIOpY0y zH7Qhb0BkHVOXri+lAT|&i7O~`zMekirY-yY+5+jqgcE}$#~La$6^o=*0w+C2^jtXB ziaPnEAYM=w+{0$w#KF|LNVBX7`5Z!fu`E~`GMikknWJ;w1uaEE%Ta&883xJKPpgB5 zPb3>}2>Z((nTzvjauPH?m`Atfe$_gP(ZQY8Q<7EPWln{c7j4**2(M2vGMPM5L13KM?= zDG(Ir!(gnvUgH8LfikoQ{uQT-56s6V|>1Q?s?J0n|9Mi z(PRQ`o%?k|TU~6h_@=lFZ!5G&xyKT2_VB*hwv9uIqUXlB9XgmnPL%KE=sb$d8ssy% zyjtqdNt(?UANBkaUeDlVJdNYg2yTBP;L}Zh`O356y4g{W3MIB^OSFYyWWw(|LkKxA zBK$ydrm=7q@YGbrX9{?jwGF4M}5yvpM9?9l4WJpX15~79#OAizG53t4>U7?qvG>$#pYYcylPCVKW zIs@D6-Et1I8JkhmM!?-2Jg#yI9Lt1QXb_LqM+VP$z_`M=3u ze*AxXp7MfKeEZ|`>BsZzm}ey~e)!>EUU<6AiVIQv_+LM6MUk>2|JU~KFTY$}-(3Fk z%OC&vpFjM|Gb{NpSsyEZ|DoVjU8Fyc)e2_N(`lslDmswrJyo}1KelDXN{)Z86{eSy*ot70# z62AS)i&A81=|aU#@@SIU7QIe)JeCLO+qd&95$W9pPm*un{#It`zc+s_c${r{;YP?1 z`D2nqzpA8BS;UbY1SV}xX~o_yiz0)Ate81Yd%*7Ff`9vV%c_6)aF!(UXxB-#c+7Gc zpdrH;9Ooxd9qx9!l2;`KISEJ5(L6N4XXl7}rvANri+NtjTnxhvLV%Ql?}6enB~0^y z@A(@{R40Y1<_U{A=I{?f)+j%3`E$Mh%+hV5p@;lDOLt=V=)CEm4+j%vj#C?m1s0hs z5|;}%7tVwsVVi%7RW+JrqL8S;S1fT5>;_+nZE=$PygttgexB87rLe>AF78eRMsZ$$ zh-E_gk4~wv!(bHmLa=?Rb_a><;!w29Hy)d;bC+{xDY1Z5!BHEF!d{7VYaL|s6-hTi z(LjP~LZ;0;P4p5Z6BqUIcnWYhraB}$=C3SWMOhUmnw5W{2Fb?f*PCoFVwU(El933} z$o=6|`a2n_kgR-BSDcRvOMq@b-ZHYn+l8eID-0gpw?O(F$O8&G(TA5LCJ29VR1L)hgvuAndVsZ7z%j&9NNB)`>-=)a|kH43< zA{EE_xT*6zE2^%)z-3Lek`ZeZKU7k3*Ghh1Tb6fq$0c>LW7;wW^=7V zoYzJ+vQ?=buhSQnh+xNYC`UDQ%a2)cdMf2kp1psv!r4uQvNaZ@8ngOy!WbJ1QjHD1 zo*96*IhSZigI6+H=C0^^`)stScAwI+Ed&O?gt|^v^jB@4Uz@8${LZ)M;(}LP?XI!a zb_navTvc9NN7JMrg07;is}GZ{E3-7ss*hZE`lgjoo!>Lsj+E>2+40CyxlL7^nlCf* z=Er}?N(fgs-9>c)LyS|yITyT)3-JuYj1t2s4|NIx^yvWFYM1rjGE4Ypp5%Nk59y@Q zASGD;Q!VQ`P3PZJDyn-{9hz;6v?fh74a1{1`q7AlV8G)bF!n1;YA!2yFJf!Dlj5Y_ zDxtF7xX2%bM~-N!k^A$zuTn>s0w;nMXFPw|j5)36by;Oc)oE5&>^b4;G*hgtt5J=1 z*?@BPromJjgWHfvLp)Y1N_2y7vbMXw5(y`nnnVMQ)CF^VT|zfWhTptsgPIZo3atf= z*q3Rg+J*9Xl@O#(9;wtsP;+&`Sxo>DXD%8z&7`NoQxT~wYp1%)h{XtSV z;reb__WBN?l}fa1fS2N)6-(89qpW{YM_pn#M&41s^5QuwMKxbyXoQ^-u5S+ERaP8X zRqnuTnonQPHxAAP6H=m(UaXhy`t)0R*2srpf)8+-?To?vn|&H69Jq_1d0a$ zAQV*vtQ;TZMSwG6m3Nu$WjeR8`3)fPB8n_M@>Jg2Kh`4Is;ti6X6hqW^2kn2=cpmp z$;;gFpX0SrIPQ5?C)+Ps8;yV4-GyK;7fqx0EC886X1^DI=QB6A1sj8CoR2{${4_Yj z*2yoLY1NZWhob!O6H@~#M0uEdBBEoXl~7Lyn~D{)k7O1NG?7rg{&OM9+>}z24NDG2 zNyp#G7B;6e_ORgyhg!K#MI~6GdQZA|l-* zcY7K|=OT7^5(K4g>Sy!V*VMH|+HY8FC>ng9IC2M*YzXTjEt_`8O}5|jqE7~O1<|6J z9Ot!k?`svTNHUyomOkZYJK0cw9Oarer{XPRG~eAcGQSd}DZ8LIp^xk+iUJOI5xvtT z1dzp@Qn(<+Zs_a%U9WbqIPM5zWqqtS7h{-%ye#&9Hfe_!q#3}pnI|c)l_cRx)A#Vs z>%FU4uYnjTl8A!(k8wd(VrV>S#}6&x?G2U5H|j>LxJU zOdjL~_{6wE*DbtNJXK?z+qEC0hfnQV7~PNM{B&;7YDK(F{Xw)^+UTqt$=rQX@5Rc< z?>Q$Xb``5S7d9t(0FTYw)Qwq-AQ}mf{9IRDKgCx|IIu*G-!wpE0x^dbh z2ab4}ndSo+-u$J(9+db+lc+w|&u40uoNlm{fZdsiK{EAUHA-WB zKE{9>Il|EBFPR>HByyc9rN>M+S7*k44B^f|F#dCOOw7N)oTHLP!}Lg4Gr~Z9dEjck zs2*zp!Ole@3{<(Q{gt`QBg;ouC5_sYNI*N$p)Qj1M97xqI%yI@Lte1*@SL$?i{y^t zz;LyWARyE9$-v5Lh}2S_%_46t80>=VAPD`wc?6Ud0OB}*F__Y10RUo}PxhmaB zgKN*7vZ?<%ddincvta?qiF#AHIg$r#Q@eQ!jA{vMRy>Q4##2i z`~Hs6aDdrsyh#>0V-U>t(+Z~jKv3>hCjUD>EnGo=1I!?Xz=R$>;*nF`e`iUOz4Gl< zo$6l(PsW_Qtcct(2xcLw!;x1amY>T~?De?!6=oL`^&!5<%in625V$&y2LC9kS5fk_ zxvp&ow-50`e#zj6xDW9{-YsQZC-DxGb*I3e7cUhj@n_W4Vj(YhTyRvz?IMUk@q){+ zZ2%d6C(7j_b%GP1WyYMi%eOpBxn7P7109CZ(AO#UOm-18psY79)xt(Fo!SG0%QSrm z5t(g~z$Sok3b(@LT@=nVe#t@)aEGfBOZVU$O(-UBwQNY#F0*5gas9u0G z=6AbafW$t4fNPfZUafk!v_3r@b|V`~1(w(bd1BXU-!3Yq{ym1SHZVp&RO@04L+%`Z zX}_dFowem(5iNhHC*V^L#@pf0%&3ep2H0b;u#I_y6MPqx6~$E1Zr z&RJRY%MPh;%}>iXl`wKdVZrKOeb)ovy0jFCIzB*#N=iXoB^g^OT{?zNOMzUkwE#QB zHKyg)1MZ%GmA?WRCNTxGsno+QAjTwrMqn~oHC5YK@=;Y&nOctWQ^8rqi^l_7X{I=$ zBP%$Zjk`jZd5@WwpH9Wo*bOgB+QDff0~zo*EE5Tmr7wJ+HJvq0y&CMq3XPCAv^fLT zskXM09J!@}TI`N|K(8)Mf78I~(u_Sqm1)jMn`wQIm_sL=xnSpYNzmUetOh!NV+~&k zU9jPoy=ay4ZV}36P{4XMZW;imUGSYq#d=2Q)4{d-d26yBe16NS!!n~!ADQGnC`j#o z0>swtZS3twNOj0UwgG-P_+TUR@LS;zFDOszKT*ji)410*Ve{FBXUUi zS*o8C5qtO<#ly{f;*~k1=j!!;==1A}w(Mzo6s!3R;#g_njO%@>->J5qx$Kl!eNg!} zNQxks#n@qpL0UNDCd+cQu8Bu?W4( z5P(Stmj|6%^f_%loXd*qesScIrQRmSQves(ASs%#IsnT;poU;sjHQ)-YDWm*3bkXx z@}ia_26!pUj`Bq`;n@O)jsdEp#kv zhaZR0(Xzx^9||$zHZgSQ13zXjYn?D7XcI$$KJp@EYgMKW*Q6$YfeuCX3cYYlVmL-- zwVj$FCd!puVkLyDKgc`eTVKJrFZf=s*1wF>QPCs_jqM`M8v<5FkQwSYh7Q$Pi=VTC zuN>JC*oyOoUt~$bR;o2lx(W2fUnOkr-Fl039Y=!yqt52$$WMtnF$SZH3TvbnsK99w zMdPRdU`VrY4v%erCw3-u4eDc(#otl8KMA9tlPu*psue*2>bjLKTT|HWr2{)62?pA} zM^zC(@g0E#yuK#S3S34X1yQhF{R;;khY`@5gDiKq>Ky|p^dt;}uIeJyqlTI*98`I- z!Xi702-a=OFMJPp*k_XmVN|r0RS{$>iU@8R@c6wR1rqUpU-&Cz0FDjrLWs!6gIK*E z_cWE72+~8-03-EmTpt66s%g=x`p;rs9z?zjQ;DN4Edp{%EB1C-6l32L{2KiyLq&}_`4-T%5 z@&q5BXW#dKwM5ooUTC#+6qc)EyrE}hnZ*>c4)n&)zLIMh4tW>X8v2P*cilw#8~9G! zc@^gcUs~yK9t~XXa1orW-7_561at3jKvnIbC|B?MQ*sv=22Z-uhS6b+5Ux2pHjD|{ z)i(+cWQA}Y4uZXGtgI*Dq{G*fn1S9h^mQmh{E)nVn0rU-0#pV0V;^{27o~Wi@w;d* zBlm1&7TA<7L%fg=d|R(QK$}uclqWb(7=^6ELZHcKd>rp-=0%kfcn>;B$JSQSx4d*Ep zzpeFu2ste1C@-+?RYKQlOcWK|j9@@On+PiKCcYBI+Ed&Cu!$f8t3s^wQV($|Jr(wV zggyAcHdS$5pz91)lm}Se@cG){pE1_N_(AbI>sdY03NKjXiwACVsCT=y5!hp76Xbz? z%=B6YIBXN-g?-9%JXQyhv9;=h#vpY7759jLD-#|)ii9V0>H6eXx<17}WyKbA(`q6R zz)B?jg9m-Pd(6}rH0!a<3STNj%L1!*?hm;c?roOpTpA_bC5`%&7=3M{`GFzR0 z{!z0;>;&I-^Pz58D)ObpuBTSkl|mXs9;am$k})$g>MTigo|ehV{=FyJIpUgn@T8h>Ug`;Pc}umr~4WycstVFz&lwfqgxtFczaU+((PE$Bqwba z?bd5Y=JmOFx*3`UKk%0-Zvzd8yu4VJaEw$Nok14|UokSgyC2G*Oc%T9hDIQdummC{A3F za07$rW#AwwoN!l&z3SporxJphriZiSnMn1_y5iJqGh3F4CQURB!eg(~Eq~*G+h+Sm z&gKjMA=(v4!S{J`>GdQN_&CfDjX31fFg&`wRkd%Jg43OmcmuM4Qg4G!@Hx&INicxU zZ=M;Au&1;=+#Gn4oM*=)OSkG>X6CIMvp0)|ITy9c?e8tJ4xVP|>6q1}ZjAK5xY7OZ z(Oe*kj)i)$)Cv_?-ZTcqG`%H%VB9b{inO-giA6yyZK7t;s~6C!_w$t%Pn);Y?Xu#i zmc})29#g%1aUq`Pu8~$GYBiz-352Cvel&Fo{r5@lbdhdFBaAdfkM1VQYjt&$`pv$}Z4d3O(a;psLj zT5-|F%TGG}2hj&;^i*fn$>62%edo?#^Vyc=v&V3dGFpm9dof{pMeiihm7xnB&u7?? zli6rL9~3&Csa{g1&R}zY5A41SPQ_gIi2L*(m-&2)L-tk~D8+EAXQ+dGXZ7vJcAJuJ>ZLLTmDR>)j+ z$#&fW<}1p93W!|cR4aXtHqDDOo@!>W*=)SY;`yg}PDk@1;caz~M}qk4)bK{zBJyLs z+wp>LH@bGIp6M=4ry2WeO2s)5x~=xp;){D{+>B!VO?=6!E46Mo$weFNX@hScWo4Bw zw}Y0fj0EU*^ewP|`SZYYc@IQga`ufhnu>(+<+|tNjrrc^mz=2<+}Rd;CLQKFp>Y1X zck;^M%-iHtEu2$T)LgKNkuHmo&#{)bOVu4BewWu>7^6#a-d+QFd{=L3AWK`Cj#@<| zlTN*0Zq;?E4uglmRw9TeUB1fHA8UD2tjGo9oD|)osvbXos5$=UEQyzfV$Jw+#M8~F zp$VNJ`t(hr=|<$$^LEmAY?OmOjE*+7I5XC%+Z&V%rvlxOo#$pAde0acM0yxNp9jxV zK(Ffss^mSTv2U%@E#YHHJ!1B-GY+R)`T3ZbN^3JzL4I$4q|}8wxoAf1U7RkBltvq+ zcKSGd>SgkO+uz6r2P#3FeaZT#;B#X_R*els-oe*(s#eudTguznk?KgBBh4VL?+>}E zQCOLXesTA{S5$*I@4Govlg87qTP%pr?(Rn}k1T~Cj()yp)nRc|-l`>AB8;a%MWT0U zh&V39{WoK7OW6o-UnHeQ;zEG#NGxAooSU4-_$Nnyl2gjSz)y`_cGMz@%a0$39;0wi zBP`#hzqx&s{ZDpGx)*h=KQnYY)_u;iir!wEeO`K|LGate2YJ#lZ+YR_hll4NPedlB zne2oOiMw$X}#*EugwUMFSraPwD z?zqdNye_DDJ5|j~^KY|23FTm_@W|Hiw)OLWs3x;IaedL>f?9B=?d=NDO|s&4q=zZ_e5ljAG&wbe3CP}(0M?CqVbjIkt?t%qn{44Vrr~3LRwTR}J)Uw{ zZ^SeT%XL)2mXUx;*Wb!4-NXleWcp%I4QL^6RI;p=%KZjch40t8tVF7Qe$HN_U!~B0 zhf*tPC%tfF=|)3Yq^D*=x+&;GJ9CMn{k?-LZ!e?adqGXD4Cb44cbV45cQ{%@S)`|h zh8D@pVx@H6g`Oev4##FJjPzyR%lQtz#==Nn=H(#o;Ar$I`{2Gt z!bo50j;IH}>X&1ey!#%^V5b-j0d%8(YM0~cJ)MpSbgSLR@OOjW?G!>W96oCfWs#nq z(kSE#OeNS`BpG>slThyDTU-%51@D|#Cv&vo#>-n zs?8TX&bIQ79@?Q(8|AK@Rz5SX+S}o*KF(z=%hhA>%s7@sd3s6&~vL_WjwW@zQ?x^3;k%L(O$J54-r!fBy6T z@`5)S>oD_oBaL;#FNw&35)vGLrV8YiT(@Fn=P*WGf1ZTPFn3?@rqQI|SP|0PNSa{o zUGlzd(dSaIE@y8`mKKH{>bkSV*7?oN)bmEzsknhROpkE5;5%Lv?MVB7A*y8Qk%=f_ z?WmYG@uK4O@u=Dyl`|hrB)inhnr+r8k&gSo74vuLwqUoiND~*l;<2uk^q*a`HU{Vu>Wy$t`T4!~s!jM2K6i2-%vJ`nBbqJ2~NmQTf z=d;)v)B>dqLebP4_Ke2K7#!zsJpC@P`_%;DNT&DibM1UkG0*CM!f>=l&W`8Z601;H z8--*Q>_s3Cp^3q9e&R*Hgbx(d1i?v{=?j7&QzNANPO5Y9C9BLYe7Uc54&3!hxuxK) z9t)AO;&hYkMT{_Dhq+<*{aXeWX1Ju{yNK2B^bfgtuRtQ6t+xy;jvJj47RHOfK#K!J zro7KQ$z>Ce&T9mJpuBHpA!_|-k`9e}5hVB*U+6Dz;02EpHa~#}NVQbpXgy|$mCm~> zklRY&pgzY}$HQ?~b*k^oH{!d`e%dm4xX=D}8gOh^XZ7LsB5<%-!o&k=1mHlmCQ+Gt z?rARq2dh^o96gvi9)T+|S$?`JI#6OG0f)-ki>RKwiicKz0uR;GYkW(^sTk6TPqs1w zaG><*gHz$FFf}!ZyGIeNV46rMLEhIgXFUssi7w_|emy{?YPr0;xO`zrz5Xn86+JJ9 z_TuglLpqr2AhWoaML|O8IGFlpmTnVLt=0}lvHJ1$>E4qY^-4$!kB1_A4PcgUgqFq#gbWtcf*rN=fH|yCEf5h5<|zq)aBK5R5Rqn3*}U5iKtV6BK6TWQL4>< zR#k;~t}EVdB0CufM-yG5zw?YGyyTa^)hrqO6v*d)tUl4NYI?ng&xtP8-&>xDSX6g$ z#gfn-UD`ySR|$U;vUrk}95Zzxu-93As^9cI&iY7|=NW z3bN19Pz+~8WyfGfhGJMFg<4oYsGEr*&XOvBN0$bYBD~mANE3PqI{h;GU`NKOiL)g) z^0W$VY(^DiO)qFgoUJ2)+EXCdvt|bW6J93F(aqpl7#*nNB{Jx5kpQV(?^ivm6ujgmz&g-(D z__;%t1Y<=ORXgz|V2fhp7LaLzHAN2rY&zpWLLLvvd>9>N^oBqU*=S_d? z2YJ(<*zvvTkNse8`j(+AOE^ozov=>N&rq-v*2)p>1gR8tZb+3P+l+Um$g+Zet`zk~ zd@Dtr3v8vRx1h%wgfXF|h&DbIoXspwhBwlP`B}Lu0v?*7CehgSmZz17LwV}th<5Z8 z8OQ${^`8n+dq~K&-PDm0@?ntEO@qmdJD+*PjBH% zRs}3yS~a?vz=eygNHpc$LhQ_cpj(KR3C|W{?*Z9D>@9?8A$CS+EyR%>{}$rV559$H z89K6rHr(Ci#)$b@30id+YEq4<*-~@M4iG%Ga!5P6ktK@;PZzBWj&52o-tN6S?E^Q9(1Pz&oJD>+T-Lx}(dCV)%0^dmBsKoh{78EqIa>Cryd0z0+uZc2H z!g+XMo_9B`fMdSVCRkg4%s0pkYn!P?i>P{!7q%5ak+0J@skfeGS1W=fmlaE6p6z_$ zoeqv)df&E;1d4hiJjSePs8&ER^}HNEsFA=?^`aTxxw@A@(ZBFlzdcq0IASxgDA0aS zu&m`+8Mr~9m|E;wcVh2BM@f#%90%9|@SaNL4>@2-}Az*4<;R!bnM!nY-6 zB#_ilxtpG=HwT_1mv5dYx>Lci)$%d^HHTh?Ko55g9C|1}k7{uP()x3~heiX(RZD63 z<$WW8qCP2~{!hDl89d$l;YFu{Vt-|YV7}c>tq6+zPr;MzRgw7(i|>peyyx8qXa9)&}j~S0;Z|59=SHYdP zbtBv_5}-L!Y940DOXbek0j``oZ^&yY-5FDem38Nhkr!f}F$G+gb!f=*>2Ko#_vm+1 z9qHw+j74C7zJ2>xaQ2D0h7}-#b2Ab=CPen56Z^y8((D!4E$)0-)dP&BB z`KAYrcr3|bz?}?=ekD?tB=q4vn%#=v$XVe@l>%5IXTCL%Rs=`(ZkK5^wkf9BpOWm^ zV~CL^HySu@R(Y0^S^>vY3p#lW+B4Wj1V#SLl1i=bBs^v?Xu2(ga^QP+z}^|IQ}x!# z&yTl%H-6Yo21)mL(~eCCziY>)->_#+ejcsCS^>oj&`qGg_?`hn&&X3w3^s$#F)=)k z_wMvi@SAsBA`S$HB5sW}&NV(#1E5j!AQ|YfSmi4S#X><%}6^T7ah9 z+p|}urkJdpo00w`4#CnDX(UI-z!-#GLGA@|2SDD{@KShw?NhsTH*6Rc%h5IpqI`Wk*45nb|8+zczQpP-ky2jSxs>9I7o3~A=dxIl z)NRzuMI$x1iJ0JE%X8Uuomz+~{5sqru(ZGi)B-8N91O&u7C!zi^8Xpi!cYuq;hZI0 zRRBV{nCO9xsG%p>^RK~-jP<~OMzUit50(@dUq2UO8_dB_4Q`@H2o_YSIDlI!P_!yl zD_N?BIsy|tun`gLqOhf)_)C$6!rM|{yjo#nSErPlgxkbK5Nzd*hjU?TK@F%;;v(Gz zJ0BB0jFIwGRys1;)$E>A=!|V0Vj&9@NMu zUa41phVn6%1KT(TI~}$Z7@yYpKA3@l7}UaNRvtn*7-&HaTtBli*u8rw2Dfm$cn(&r z9;ty%#98_h%)>woY~jfE;ZDUs3}GSI6*0viy2&-`VrhZED?F%d*Kc{@@XR_=o_R0Es%eHYAuB?ZObGLh)# z9idE21;JKSf4O7?b28Qg8xdu&7S2EmY@jTEqvT8X^)XZfdpOZNxR1h#Y(a!O4nsMp zi!Z!-&5G}#4#ijwYU3^ze+}hfpanLN$07U4$8vBRJT1!r-C<*YA+UkEQqL5NEZEiI zP=uPfXJsj~6Q#-NzDOp5U?*`}1v?@`F}Q_-l08THVxR&>?*o>WLou+0tQ2p-EDXfJ z7Rq4!k^s;33VWdp4Ah_|9yr^o!5pD%O!UA;@?*$8(y<)a2B~OrTObrlYD@Qh@fkj- zXmHDc&4lYG-Vi!}h&N__WH<{$Ik1hxF$>lJ9g2Z1h-02`TGMZwBPLQ{6IuM7SHTL* zu^imSR@CA0!kO#YQ*ivBpZ%J7M>z*8`flZWK&cj`qLp8XGL$I#m zffm?6#Yh*WyEZ*kgL^1A3wKQp)et76e7N#yBnP(fs@_z870ks@4Qk>k+dc>D5gLlY zE#$w4b6{zK4UmSQxcP)}C||>kiTX+y4)ya^?1J^v4#mJ0!gW>uOsKEOn1VD$an35|e&mHzOj9)qY`6RN z?fg)u-C-1?sm_Wa_W^Xgf;=cQUS<(Q?L`nlx4)oLd5IZNU? zVU_!}VlMWo5YpK#KW4@0a<>z)kcTgrQM4}7_g!6o<#pB1_|YYZ+4!**bF)SrMommK zuR}DZzTKtC$-|RV!pDxSv)IwL;>oE)G^W}darKny_2eh&ICINdM1x_h1u`{1J=uX? znvy(AP_uKw7Y9hy8PBKVE=x~(xq>nr)qb$lJ$rOaZR4UYj6grX{`T#Ys1Eh>nO9uf=-#>y z2qTflg=10kgjbwKw?lngT-3+Bk&~Aq!HZLWz{k;Np5z1{R+ta{hW&mb(5)~px-hpS zEWHo&qG$1U{gRov8OF1GJJ83$M(k6jUv$%KqLi`Gyb8@*leg{9*Qu;N0X;P#(I`5Y zmrcD_RTt?V80-lZ@`CCPHGYs~0^7Anv8yUoZ5`5?~QdQfyUad$^vTnaZtPJ9#K{(Y-_q{2% z^hU6k$Pw)AMDG{PM<43%f@UBH+f-#~4y;&jACJ5^ij-BvgE0)JxM?4$bd80{0$m_e z)+0B!ik~;w5Yl;9;4z~>Kd2{Mv#yYjw{YI>^7Ut@YtBX*e!gz9y;vT;Fz;u780+Wb zR+Obk_qwe}wBwZUbJeYj?|J>r>-hP5sMFO|Xy#pwqX}NFvf{`py@;e*C(SejyNwV# zUE;_g5ZuwGI=L56L)p?Qe%`!}RM4X|5<`{cvzB~H^m%WDv-j?2PAi5vXhW&+E;kj6 z-Q$B$4z-M*yPpb{=c>yxOy*mEl_R)SJ?vb!xS#8Nr)ai9+?kY-E8NRX+YBQ(8HW0} zsEWV|3>wg7j0aa&A@tWHB#G zw1q*OAAhgj;P=t}-ko`R8x??koo-c6Dy-LNZIJs=%9suj$ zgPmOPok#_=+r)Cw2YNbxpdN-$N8k?JX=K6gsC`8Z*-X4t1qJmO%qe(zYI_b*HrgNp z*}PJq+c5t=f-&5rj0SN8em8QZRKqsxd-ZX7w< zm_ZiQ12YKsaMO2yB0Tg#9%M8%5RsAz!kv9nyrK8q4)dTt7UFn+5cXc+3}Ld{rI-AM8q&5J|8%Mrf)j9pYjbG5Sh! zlce&P8eB1bTa<=gMoWLY-sr=4RY7*C<40~VFBuoXw#A~ zrG8vtWf8Lp##JeQqe-lXk0!_VLtfEtW)%EAQJn$3vS2GSVqhp-T=mTVINBw7@fj)o+yl0hv^EK!WluC+$r0vAeri0o3 zyo^knnV?N#>!TlEy*Z2OVHoS@<4b*f)-y;+PR7xAFIK)k)Ay_ko(c{vSGAu$<2x0+ zJV_+i^H`Au{>a$84Bnmj3&5L%c)%x7$yQEQtQ6Rq(WNC|lI$5mkje1k*A;Is^t!CF zqj>{XyA^cppFN;(cK0p3^PONO-xDx$)p@YevJzm%L7rdds`(hwg4!$;YF* zhdrKhk0a++@bx4s=9T=}&z4if*ICMro=0n{;NwY645v7;<9ztHby5l0vQ>-K(~rx% zijOx{)uMZvM*Dbq;Bj4);-$ZeDW2w4e7tSM@4n@K`iz8^tE|v(&nDR!#rpX88kg6) zp0K4Ko;eM?uT7q)LPRFc00ykoa8xsr&Z9dcHwuCJGF*NrP2s64|8}s;8+?M#)Dd-p zkIP51?TX190IU2@{kS!P_%hEUe4R~Hf_PI)d8xZ3e%>&hD^pMOo)ycBy#45M zb-f{f*Bcnd5U_f@hk4ctAzH}^u=_(!*-b|n4c>ePGMm&Cl*oD6FD9 z^&iw7#o&i=bpBH+-jI9Vh0v)#$?TE6mPoK2MPVcI6+Kg#4^NdyFeIHGjx(dc`n+qt zFY(Ol7o%YS9VqiaoNYOpJBY*MKb|T$vrmkF2c1ik_nAoHM|Ko}N0O_Wje#&VO@|vw zMRVfGznfixizkOmnXp_`tTtGy;cY(bl5bp$k z>P->dm*Ka!m0{IU4Tz98^uh&O9~Zmu1W#>PuJfM6T%eze2p~RW`5$&$Lx21R#d8H zDW$r3d)eH7H_`F}s!lm?{(yL~N*U?&E7I~Bmj8Y#SbpF~-hYCh zl6?~qwV@zlf41z;q>SJ`@ecCsbJ?`8+D{EU#9b9Z-3kC$b?PMuf ztvdeN$G^qTZ_avoJRfiAe5R)_Z*KAL4F$5cQcN0uO=ou1yJB0VP>jiH^v&&ef4P13 z3ck60bGJSn`f_}_J1zSsy!`#wc=g5H@v>aj%b8BwZr=Rq*Y%V7PU>p%R=X=ECBt4C zHIurFRQ_oFrl+$CU3SayYgvw1S}yBde>}?et>-94Q_I`~#bPaYiqeCTDAE$p6Mfb$ z4vbfSzdPPv--vfcnmX50YAy8Gd~eCw=Cu^ArGFNLT%JyPef?5g)TYIEhjXgdBe`ht%>`i_5WAt z|LD3ro<%=))%qME+Kxt2lf+~ZW28F6AuzUMjOMFtb$L)(8Wum0JnW8ow^G;NTUpy3 zo#Z)&L*Y|K8M-zczpIq9cN{xA<7~}y7~6zDN1;-rnIfH00AqS?u_`@6v}#`%h1r6$dEDYJ-HNrjd4`~Bj~=IsHbvuBtHXXo23B<)D^tO=o2Ro z_AexyLdI~~ZmC}-%j-BO{oQ&}+0p*3K;8xzQ+svVk~dbHL~9~;V`~z}xdCUcG*2ka zZlM02LMbRtD!F?r(e)ZCQ=y8P%Kr0Veph&~0KPv=jw*+^X>SDOqXS$BgtoR^DN6#$ z#W@st91bi9Z~AK+N#qDhcK9NwZ%{SXR}9TFjF(&!A|Sk@90*-))dVk5YxJQ+La)t$ z@cZ4#jlQCCt}&?emW80koAt3rhkg-j$9EHUU|c#S3NukC!X~3!H!WUZCw%um_AEiX6J3 zQnt_yYr#h6oXY$Cj)$6)wh-{T!}fGT;298tActt*>T|t%e|y)kx9U z43Zk*Gr`Oi_16>MP4?@`ryWfChjY2I_*dWF{1>-c0t**Xf5lWyYvV8wz3W%#5U>ns zVXyJJJ)|vNFuR3iPi--(JWd6UEcCG?Ecx#{aTH5Qlg(wJI#~F5=FPk}lE2>ScTGqG zqT>cAv(8B2YPZ&4%P)CB6kmeXTmb#1S`ZGJmj~IH^~+rQd2e9ed*#3sgm`-)20_)} z7SP>WG32#ge+eghMY%D2T`##l!eOPmzJViDE>EFLzB)osRc$~6ce@XwSJu&|$EW)K zM^%tkD&A3az*>4I`9k#;4EaMSF74ksDUg9X+(yPGgt4JvI%x+nHm9>~F{u_q@{VG= zCi?_S%P5i^)3O6^_Oy{TVcaeQ&Kr~mT|1lYE9`RFe?GSuGd9!MXG8->u#yE+rb)*k zc=InmUx*mQe#tX;t#N-XxkiTV*K}!QM5QXpg6?5zMB6xKb4~qpaRRnJZNs|{E$WB6L zqAk+@Zg%zNy9~pd_xR@iv7CxA9xmAm8boV!fBK=90(rRIj)v_FDb|6WIlw9WVHbV9 z9H!EyTruUwiaHw81oYOIIOFN;P&8&9O^9q0^>z{3xA}5%@wK|crh_I=oRvC~Cq039<)IvC ze|mi<*O7$mr;W)T6K*#B`=#k>uI2}AjWG_wFbqX^pTc81vQkioN=VGCm8y_9B~o#s z#2G5Y-AM`yQoY&#`TbKL9s$6RUQ{G(l0>Ivk~L5|AKDIBJt+mH39oEP3z_laOkBqy zr~z*Fx}Yr86Y5kz`mY{qD;j z*bY1F9iN`wPkMaHpV^pzesGMi73Ju)(`!aK?01zRH=<k z(WXL*Jed@bD`WadZh)yy1iJd2lSh%n>m2Y)k%GYNHyP>K35IoMZU!c0PP%ZQFXS~Q zf(xom&h%fEljYPvOZBiqfd=Jwrz82yQY4tH`S88uaNRFME^_B z)Gnp}_y2k6r}u8Y0fmo2O9U|te}(V;6}j#1LBXq|2o8vXpx|{uYMPlXbkdTftb^=- zcXkR2UVO*Am+vJvcjZu=3xvrF!B$No+Plq#^!94kIrbB2@ksE*1EEpaKg1yOzAv@U zLVd1mB+HNkN$1=U*(X?Vs_=Mx&SONMnhW%4#6jUzGQJezd#@Cl=e`^)e=3q~ZGoXO zTFeY1S)ZrLbJ*_S8qOE;xQ5%xSwdEYVWYF6CAeTX94}Mr#!@%knmo0N`jI03@-4ru z$p7ho-ua=P+&86D!Ab)$6ujpva@++ky;?=2A{E3I1$(fv#O&KPm`%dVi%XFHyJ@?q zTesC>E`b>)nR%0(UAU!Vf2;(l1p?1Jp^{Wkbl}ei`H&e=gLgs#zcCd^f^vSXN{sW7 z3nPm#vcV8w0!;}xWUNv~Xr7Mqo^Qc>Sg3SvWbcfp<-&_rl6w-AwkjA&${M}^y43nn zpc00Bmh)3C5JlW*w#xNFpn!%y8EAO2kWAU_Em?lT*WgvC>)4uWf0;o`jhkD$P*Uiw zV%$uZ(f`DYyD3@;-dpSv2k{n~69(wRE1~@-5wz}FZHbA|abji(vyE@5z2RET!>e+~ zYG$>P{o&Wl&a|F~n-*5Tw0H%T2%0+LzxBBx$sR8G=rVU6*Ky&yGyQ-1-H!IY z+^$VjZ-U^3&3I_UP+t{0fe#$Y6& ze`p~tL6y&`z?OvWyseac_sVwSWnIej!pPFy?|JS{moxX|gs4z8(j&ygUMt@4vqQ>1 zC7Cd?MRHOhd^a^J#;W|PEB{;;t}Cp^!ghwyheK1L&xGg*f1&P-Vr>mLkK0WvSv_T< z)KB8aNdwkDBBI{{gmQ?BdQkYk z*gx$%#U++}j2~*=PmSV{4`*)l)=SQ`;WvW1hWI1od44p>n6RnS^wa=8OuVogf{~Ks zh<8+k3-8Tvn*MET@{>(DyJ>ee#D*y!*z0IGi5{}Ie=T~4KKv$!X6?i)wN=}0+CUI} z_g731iEW8S?W-w?QbJTDRHBsjrKzlCJ%*LcuC==kiK6^_XYmDxOCnY6J}t9zIcMfD z{(PA)bI(hVXG|jm#%jTBY@c#8gHK`KlWc`1XB=THQ{)zt`x}wyr~6@E43);ADx^hC zMwy`Qe|uhG-g6y2BEP@YicfQt{Y^kxNN$Cakcy04;s>U8AF4}?kHT29^D0a%q}?%^ zT$3@~u@b>mY2r#63peA*Y;+g@yqb)!uV$lo{B72LzWsU|kEWBp$L7=<#w}2%jDZ^e z7iKUi$%9zs8Lm)T0~O`+!F%?APF~D2!M8{ff58?~84N;*z%^bjHh!hIJ0gYPWQTd+ z=TtgYRND{3ma{t=ZJ{Ojvt^5MrwQm#qd+PP?171l%`-gr`%QwE=GNtEwPG@X0d(zB zm=6~Vw8PRCgxiR&Dr{a@a;w`BMM%>vECzLsmb;@Pi!6h|U{J>%VNlI3@NWnxCSVm* ze~G~^-E2yHom0~}_j_=l*p|(&uCWPKBR9IB*1w@C-{O*%l?LGZa6$l`P=YF=mA3*| zyI*dhj!J;Z9zs|z1z*Bis|tRqvP`XM-cU7==sElM+4bn|E;==*rbVh(i?AWE5zPB# z-DN@3eqA!4D$^gcu&Vt|HFB!RzZ?{Ce=3|L2+t*<`A70~8aXJ-x8%03)4x;RvEu(( zMH_T9Rm{>T;%-w`E5rnEjKNrD+tYX*Snd?)x{jkUN2b)}&Y$84^mhFQbyV-rhTLaT zZs4Fv7Q)$CEA<6@B$C_TQLE1tBlquc9}Q?WZ9}U))n-@ry%+Bfg^)dq!!Qhne|P^1 z(IxG2(6wpl5IE@4r9+p%;j@*Vz>$qD525tG*GWI1T)ERG>E+Rb*4ywCl(J}?jtKK4 zk&JxF5HM|)i(0YnF$HZ9cHE&6wCyL^IJ8a3jgQ#)%!08D*WH<2f=dbZ*|~e} zwg>8i!yZ`@ye!mNL8*|x9U15{e;XmsU`e0YC!8-}1*03Erra$(Rz%5>p*oUtk7mZ@ z?(Czgr_|*wxoFynx+RwP%#rdJLi}Me`d{wXAD(I#bp?%*QEMA949DO7DKyBqJ6H#O zO_qj{bu5MDN(0MF;JBW3si`9yTelEKzWda>tZCXLou7-X1R`ZDqle_kn#l`R88 z8abGX3*LB)!^>=-s9a(6WrZ-I8Y@P<_-=IAEXKYWyMSZY5Mz)aX$%9Unut(0RIzac z8f!zS2ZzzeD%xywZ%wtQ7DeSqfBI`GP7kWR`Jc7_JI2%L@q>vMSFc{d@C0~!6t7LWBo{Hw zpbt+r)AAK2AU8qWL0k9x@zHpBI)Y^C=wjX30^XKfyRZ^txg7?iw?A%+`DFSnpU;Y4 z*LSl?J}rKJy~*#uL?FjfkF(E-K##W}foEms^vkStt9>N1`!D6xe^`44+Z8;AWH)Pl zdf&2cq0;2Y5~UwwmV7#?V$V2~vRkdlCBKxkYpxIX&e`K)KJ1o0O-_y`d1h_ZU!7E4 zYuhjseb=wJD+_iYtlO(SFCAf_g|P zIrm7Pm-V40q-0bSf0{vTtmf3__Nitj`!r99ERM|71!Zt2D@H9Vw`*SNr|qhCE2Y^= zIcb^3qAZzC32}x&lrI<}CG6+MM%Y4B!yR%OVOsNU8^i73<$=$IES2vv zNP1JoQUnM#QY<}IHNka3mqyQnZtwKsA4mL5UqzDLDC-$5N6kUmp;v=vjwXGJbs+uj z;4huy4EQjgu?$9uHo7u7ky{x{2+kl1t_&X4`jK}KeEI(Ntfy&i#N>CF|Cy3tg787t z_tXxSp7J+qD&Uym*)(pnBdMb^<%aq*L##|*&JyYI&X}lJX zI+-^F%ZlQlxFFrPB=WhFG`QU;36K!2pTs($Dj1xwBeA?^a6>#tu-f$?COp2WcSwp= zF;G7({S9M-^*V3;5^PjfVH&NAA@&aZLIyyRw~wYi&p-JdlsxVAf)r;ZsTq;Hr`0Be zZ4)3o6$q=WZ&ic*OMl;%)ec-#LN<@af0fLBv^U_|w-njkCuXK`9#0rgVLn>Yiue`J zfe4DiF3HOhvJS0Eu%XM^GA^zCsMHP%u3gbyC-$;Rc5Zk8N$Ii=^b=ImPlW|$MFQ*X zgDYL-*TMr{GLA-Mdxkc+*1(MLv1m{&IwHWAD>5Dzg+H9^8~${t>m63CKPo3Kox-lz zN7{K3c1Y~`UI$i(&Iq}({sFiQ;|%wdz7b-$%?C2fsj$lYy4Tj2_Z+#G8S#kLpPmc=zg&7y248$dMHWry`eI@ zv!LntT3JhwB^Ff^k68^1-Yj@)*zQ4?pSEaShJUWbMxRFocIUc~8Zhl@ky9}vN^xYx z$Q}4?{WQmk?r9vqYv52Iwa0Sis>*<9>Et(A1ioMHmu0PFQ4o7Kc6c;&g3`t z`?Vv=ihfGx{`~w~VMxhCS|rSgI63rsB}!-ZLplTh)+LUxOGGy`}_OC)&zTyqTYYjHLzUL8scxwbn2}B?VVdk_HqhVA-B9x7&|METoB)fLAJvR_GK>Z@( z=(ao;ce<}v60hJX;bA|Q;OJD&TBzWmC!2MT#UsMKlIfJ(A~uuJkx~jo9+-hJZ1%p* z&DTO~bB6Rcvjt1EZYOi=_Z;Adr@1sbgcFCg@p%GD^-%xi%!~I7#LL}!77V}0b0GDk zJ(tIp?q^!`Ut>AL?7IG%e=s&BGEf=16_)^TZ~s-(i-qT-cA#P|b<_0Q|5IHmCCBze z+`p=l- zn<5B=jXJ{>F2`y^iau@1te0g>84%F7ZC?W^Z%ON1L@ZR)yh0c&xPz?Eh{Em}nEu8Q zy%Iq;(g;*yojy!!&*x)<<@f5&aai6|@nU+=$Y4UK5_PB0{`bMHlp;pIG=Ie-?Jzc5 z1HW_DdK#w;BL+ZZ=?2<;ols23u??yrwHSfLy$seft)i$6c}#}!UBqC<-^^VZ(EYa~ zvw+E1a?Q}%^qy6o8T&YO>itsSdB|*nT>iU;j!s2%JQ>v#$`umrXCBXxpnLo$58I_g z3~D9HgV%@A5h*X>eXq6=F!!|+K$A0K zS~#jxy`LwtS&1`|$-=jowU=*MN%h^aNEd>mV;K!`q zSvYFoRnm40^ZaIsdJZJo;?n9P0dJTpoYJ8ARsmrUE^RF&TTr*U2}eO_PpfT@t?A$IICQ*pL!_8$nyRzurG}%MER;dN};h_>9=@ z39(|7J!PSslZyTJcPhL?|NQDX^`|<=#G_)3^8I^tMwf$VJ1ssh;R7&c1MuQ4FO#c} zzu~EB5lO|7``Oly1BwcCy4u9+Z#Ry!-^c69nzsC`AzX<@Wz)SrqRa6MIo23>Zhd~` z2UO9iMmke({(_)7X)n5Rq@1W+%$Rg)AQ0DTN1;`?-UFMA7nBQR_=?TFqZ`#j{d(9z z7cpG2GBjKosIX*ff|o*V24Y>xiGn|EC~5lsjC$PY(+BN#p0d|$6gn#~C+AVLi9y4g zQ~s8ci6U!5G%Ef}ATtTk7ci!PWSWsQ;nbk93^;=uP#0IzgUF)Bx zUN`T)EY}#BX`6BfIFt?i1pY;WpH@@ybtV!1vB2EHF}qLP8C(UR9dN zJqQb{Sj}oXL>B8?Z-VWi2gtTyDF1SFext>CG>3J(qgW%_G@7!Oh*^|{)qMg*4dj*e zL>X)Q=OqY@{7Y0EoGB#tX8?%=B8Sg_9dUZ@t8J|GXvotoh3znTlyOtKyIG}h>CcP8 zO^LOQO$OM17~3B)8OVzErPPG_K6>t-pK7)4+rB$r;#^%V+Q_ zC81BVvnVyY0fuPbq>$Uw)2mk3xxanMtNy?4NBRPHY!4m8xn+L2G84Th#c_+TE8cNV z-HcR=z{$e9L`xZn;bCzt%kWjs57A7bs<0#Y4w-RR%=Ma| zc$j}!ye7Sb2w&GJtgEe_+X_PK=cu<-A}FhnqC$C306Z|2jwh$nj?Q9>u{vnQiws`9 z>4fhR+E0!txJUJS;8ILyA>}Rxd_baN&$Ql|_Qm=x@JF)~Y!+P_+$9+* zMD8@Wf#TN|TXwEpH68i0D?+=2I{6h+a!&MeD0Kfu1M`IM&;a~sSN8|Ln+=l${w}xM z;Jto$eLS50`?GE4i8pg_Mz{ar9sI>SdmG*z2;gkeaXq|4h>DSs8el*Y_zI&Vf48QG z(Zv-_u8x57{}Kj3=3yJxPGj>+JYRQaTN_(r36gDI$sW|0;gKss%Yz9& z9e5C1B{JKFDa*hIyJgDYBUD8ejK2i@J*IZyb@4vy=EwL|^GM@J(82NyU@}^^rtkpF zuXiK2<5`_K=!P1M3PW(cLDUo9$3IK!@1?Am9dSYF2BOM(j*OoF|m6y{BX!@ODkSsa5UFcHpL?t*q`E`$Lb_HNR(5;8ft0Kss7X zRp3ydfw)=Nz8`1;+wbAH@WnHjR)Yloxgn|x=lYd%e|DTo1D4LVaerxn7mQ%m*l~E+ zB`c?d!&fxpJ;_iuTGUr1M+s0iBsnliHBrKavD@U<$`1zSe&a%J;^JDMI#z3(nv;Lj zj%K@-D~V8gkon;a!P`R zPW5J-eoSU!v{I5*@mCdv#H19ZDs=UP%=mOgB+STkne_O?XxQxp^=OzNg@~bpiX(`i zpoF=itZBWFgO9F#n14=pPKAG!e;jLhZ3Yl)+W{xv2c8kg{%Z&{Ba&IZZw9`CAU2Wl z53i5S3eBx!zePX}uIj#Dxq<1j1IV|QGhH}^5TNKQYtbk0^=98F#gO8C)ng1Bc^8t8 z^x=_tAc7aJn!(PmTwKA52d}qin`Q}wzE7P_5`Mkge^VXUF4aT!D~+CcDq858&Hjaz zOot{(mhCm9-ga@3|WDaI|&+BxD`Ej&%rcM1174( zdeH?LW>uZ{&200d90TH%+#jt7A_XqljY2*@j&<AfV};M0 z!G)27Yri?(j#xdl(y6%-R_=hmxysO8H%KaSKwbc4+^ce5c-Q7{Ub3ZnEp*3luAsmd zGu;2T?W*TQaHA?IQE;gf6`BP1gH&iQ4BYOeYf+`jj5rY+1FjmbJm?RR4VkLycT*_X$_MywvK@Ixq;UzO1&%fz% zbxRvVrfB z!7OKk!G^gjeHVPE+{D|Fr!Bwh`g+o~rpF__8<*)Ph%SD!yhZ{`dQ@!CHQ>4O1kPqF zf4tiawD1}q z*=5ZFzg$*JaKpIn*k=qT)yea zZ;}GaRYkmYmk}6s&WGbY04PVkgX_E#%SZNtxOHanwzgC2>>|0ixPIm?mc{Sepphm# zqrNhxPKA@?MDE&s^Yod1&aogsMvEY}p?HM3*lF55KXw zNx`HWH?yflO4b7z&xM7r(l?5x9J1rY2mpWZ!jS&zgq04My`jNs2Y}JR1_r6OaS+qP z$Lr#)>r4hV73?eOZU>)lN%J!Q83PbIowAI60vFUAL3AE|Ld|};91b+GMS}byWCvGa zq>^AsWn$dtllx$4FMkJ+SFd4YdknH63y$|&6z+c{arwMpL)byJnn@$hSOw>L(ns-y zQDnJJR_lq$YM(LymunbT7iOSa@uu+#+WP0B57tm-Mra$ou!NP66Vl6_n0F@x1Q)m8 zBY*1o>A@iA!Zz8}bgGDQkfL#5TI@!2Na_VD3HdqZVRUIm8zIZWKumpgk)~zT{@)0L zM#YpIuKxy??;ievr_UkbK({am>A?KI|G=(q>s`$MR){`-LmP!d|Fl^^jhd7BGWD^b zZan!#!Sgmvt~gZn5M^sIX>r}C0yXDZV@Vn5SBT%Piqq(W9QG#vx5De`>NP#i$A{M|@U4Zh8QuxBCFTb1Pan{{KC|kan^51c--(vTYaJaQ z3=Sp%FTpc%1L!q6>uk33jJ$aP2POrUQL%mTno%%8-sBnuf6A>yhFg(TG|rD%#6#_a zAdvj3f^HGKf8G?VC+vV%_D|LH*zW7%qs8)kWw_s4qdQ;uM>Iw8Y|$2m>?QiYt?N*C zRvN0S;{Z|dj(rS%_5CsqhUszL`Y%aXAnVzc%z4AtKO~4-p`;+j>&w*m9HsZn2@KT* zMnnR1Snz5{%x-~Ok!gnTDhAfj+nzs30eWmwMDmjk-pkS4V^5{{OFRxQ1zCK4g+IGgOq zo+#+ygErhWb03|E{WjOd7m`5y@*0W#SW6mQ?TNQrW8~)tQ z;+TAhx6QpR7!CgpLMW3lfL6LG{a z+OI%JS+=%wMYl>Arq@xBidkbo>N-}7Hu=ar02_Sw|fEMm?uBm6sS zT^j%C`T{vdQGy!TN#SMs6l@J+Dqd!Ku?F}0cNoDVk-~Vr+mxSKccPic(wCp-hz}to)fx)G42>Tbgsu zcq~rtXrh@i(KL01?kY&Ej7|BaU6Fb&GapRTX)HsFdyq!-&jv3=OjwLX3xceDbMm)C zBp04h09XGNndS(5>-C$dPGi2!+GUNV7$;o$@g!XOmi$LS4%(b-herC1-E&7)X0l?H z@vwUMVovsG>QTqGc2^*>c;y9DmD2xGD9>MqsI-ps$4ah9gS~!<#r-!A%&A(J3e0aAC`e-vTld zdvET2bhg)I_gp}f8}3YikFq_h!Y2H6_h;sC16eazF;tE=G`)C#VN~tV!;Yg<2QB@= zn5xMTxj`jNz~mG>SMFV<)nr>p@8|B!c5zYN>Dd-`sJ zCN9q`U)W3v-rUr7jz66@#dVq$>a6BIa1h?hT^En!G1lb!tuB&TDul*VAxCLhxXb8M zY6%e?$UP0*CZs57m!s;HoQj~unssh;B zdb^;rYnq~RfENCy6vr66SpO(VLXOt66uvOC=%)KPw=L^&)n#h95s*F=e?ViB>FR$^ciC~A`CNX#;&kK?redw5D;Gsj{fil*ziP!R(9bH*b&`VvjIn-CEc~ib_V3 zI`WPFTTZY9BAH5RqrPM?C0Ma&>XP7&;EX`+Zarv#oKcyfb))Nd1k(+@5eiA+ z=~&n)LcoS#BI}6XQGwKjyWv8xl-%$A;9^!v`-vP)kK|D zUnY$Il&U99suBrNIo0 zt@ztyzxvSn=mwrC3xLCNKhxilY%BT31ri-3iDhf|COX`erh|H42kclhb6Md~VNt&6 zHrxMMx`TfA9i9*AMi7S;krka4j&SVnOpiD*-`p)@Obn}+m62v|W0)L?SA1^?D4)ze zGh$BJ-w7cdvCW=iV!q{Dh!}bnFN1w42)*>wIEI8?HP9}}eZUe?uj21oA3IYQ;|$X5 zjJ@A51Old&wzA#qKnqIOWG-cH+7KyXin4b7O;+SJychkRCq69!EdniW3c5C%y=Y$& zybsciFpf2%HM%t%|JdKz9u;IYXYGA^nSRy`JJ?-mCc3y=_%@PQDRZXYIG7}9^}rMu z+gOP>=`-VSazF_ut$wsos91*hm&i!$IA~iYnHqbHYaKNECb=IC0S^ytt_{lTlm-Q=56L7I9k^f*$ z78$HKS`r0D+s_1U$TsTucCNJJ(GIaA>wGE^)=}QD4PZR>t*^)LLoPvczobmu2CpEm zB5niV*`Wt-so{rW=lYn|w>wCA>SerUJmCF6p5zl7qDYZ)9_)ywTY^iL*(QWN2#wy< z*qf==p3bwq=Y8P}xpQ1w*K!aUZgJmhr-Fm&e7my| zx|Z&|O1k6jywn7|SF_bjT70zp8}TLtSih;K0Pj&{4pBnkg1TO15(1;CBPQd}cg`f} z@5N^=WVoqSqa)qwufKG#3{Eiuf|Rj2R+mvN_Wj6=(84WEup-y*~|^aRBi(j-Mzv2-@4t)`t@(2Jv!Lf^hB^Md08c7Jp1PSwP^ z19X}2Bq+Cm)GicwGWFJ^`@JL?uyt2~Gi`Pk(upz)n3W3GW?~6e@6G;^4!h`Zg(w9k zcfxV49`d>NTn%mQ-x}o$G^LE%Eizj^L%LRIG=u ztiCW2;hoRxJ*>{l?=^g(IJr9cPzoq+fh|6{aWF>qlP+|GBgRBC+QDec8jEkHU284$ zBCfT2Hsa6v(3NRWqK5dE80T0mGsLBAEv;6H23K^fK2T?L$eK(;}e zN9;2=wR}rwlK=r;)Z3Z*Z#hB5aZMbFGbgO?M==P$<1KMQ6x5YFrfxYz2+k1}bp-93 z_Idl9#SLb`7t0oB4NZs?M#E2-Co2k0l&HcpZ|-yN2}BR-GH=fOe!kBs1@^1C3}Guc zZ+a00oXK?Dlig?V=s=J57?-CYAR7NW#GgNJvW%Egf4D)#x!Z*i3Q=C8aeP8rg@R zY~x_x0QM(i4dTDA_z0t=j5e=N0yOKZN?d?C=2M!LDZmmt^H+79c{z%WdA%3&5ZFanfK>0Y1)Jm>z zIFYOUIeYU%>h_cL=6UA&p4F|#wlH*C(nRen^HQy zT_tOvhJ@NLsPl^4P_|jGZC&f4Z}GRcee#8?T6z>R^v5@K=t~<~bE$$rUM^N1fRrd}K3a5~13bn*PH8<&ot?L@ z%XGnBnp~3f_?UQ5qH^*S{QNnwWJ&rkg(S{$tuWe(WKW)Lned_p5;WwZ>u6}bDUk_r zB3kI|Mb# z$2zCu=eJZCZCUQx0P4c+J2$8FvGFy8UKxv5pZObvbF|O+1;q}ynf*%!XYYp=hsAB? zV@(2Qf>8sxnjlv?!KyZ|nuzU(=K)<#BFZ0!a~=7F{?w;A{m}b$q&O zW0R%%3U#Wa=G}9JMW%L#OST<3JhJ6_KbAJt<~_73${a7>#AKo^81UiASEtnDquOL$ zw;q37%cohJJU8825o_?QDZ-vOaH4ZOto&9U{V2JX?yNbNFTFu#URYmU^iI_E`HhTR z$+VM<{&H0?415xtm{)+e;l^*gp=bOG(l)7&wNIgq5r$|MnkhY?4a|B3H|BMJ$6p)> z@Jyo8wy)ozu=5O(cGtTX&^XjJAq0MzBL2Y*800>|L!(0Epf2Lh-qvzYl1DaTL#ags zM7i$zjGm~TH75LUx^QUjJ3&LX-|jLTbLJ#nDs3vSK!E=ur(Y3|U|K{actAtTcAX8) z=ecGFwxAj0=db6~O6WDB?_ioV>f9Fw*x;J^#Q7|g^2#U$rvM@4nXF>rUSC)aP4>Dg z9S={wPy1Md*X;Wks2_cZ_t?qqQ*fMcI857n2Q~Qc17Z*8K}rOKZ0~DIV_{uSq}T~E zX1;pOQ#*y}1A#p<5l({$EKtdYd*eN82MRZgy%s|4tF>RB_7g)L zTyg4&7Rv4W!r77GNSY9_&Kn{J3Tep?+pIsWwY}wnz7^E9n%2FV{5E3h!O83?JHvY+ z+*~m6UKDHlykkhxNbLPawUz5X7NF?_I(Hlfm1q5GKHcn8Kcx3r)PW%m&(#R#5jc{w zj)(a%B3i|P;j;5O`3C_8(fFIAOX zMBfSv2PmrCIPV@uGN?LUW*ebhnn6`K4$U*ebJddgqb` zf^4}p8A=mT`U8aZ!lY*4Fv&>lfdj%Gx**)Sgi;h%!Ovqce4$~ zODAP5M4g|T#$%9@0jNn8`~2}1(uuUA(o^fC;-V7DBcJaz6-BarC{naUw+lBJzGu$g zrOSeTSQsvx1E|8O*pki@t%m9q8KvNQJVgRiG?$_^t^&+%6yTBF2&R0ANDFv@G%}Aj zZddn1N=HqHQzcVQK-YZp`Mm;e&T+GTAn!_fXTjuH!g21kIWL`#f0FyvfX=KBmrd0p z)<)4nm?))uA(3 z1<10*2CF+FZ^IjOlU+g+@wH+x%_923IYwtpz(bU|dH)~1GOx)y?MZh)R|sA|e%kjTu@?qNdxMd%Xh?h@7xslkp7jkN?#pRK0e`jnmLCpoxH()3GI z;7VlWScX6$4%O?XS}mb>9L}d|;1lYSXWeH1m&;dK#v(yf$|E15F`%;*Bkl)mbARu6i#vDkoIj^P)cG_$ z9!-cl=O(~$lSLz%{de$29_mFl+H{OK^W&xfE6c}(kU-nzqM#um<@fi;scz1e7(JcU z5~%JqgHGY+DpaE_ovZar&Cf?IOKgqL_nZUIUEssi@88F6&Cc_8pyk^(AlLor=kxjV z9r(a}eXn_VYq@zZ+5SX*zYpQ3c}P)Me%%MY4M2B&{N?`pHS6>mDA@j#)%r;G`Gl~3 z;eCHkd0_w1a8t7Veh-SfaeYh~YDiAzv|P&%9UO>HPDd0PYk;p!KtKoDl+Dy~W zFnw!_atxV3lpK@5;lv}gJ^yHghw|hK{1svF_uGnt=xL8Z0g&4LVuqI44DPh>hMEQH zbR&`#Xc56l?xrc=hfwtSZ#y7^#sc98T?5Z}+3T|yoUYE>kP#j}IzjhO2?G2vFcoYM z+>nc9c=MSPevEx5=h1A&K`^KLTgoB2f@^Jy>JZE^1eTPJ$Hh&V3l(T^Mipxd*lkD% zruP(elRSNKwoMn^_6VO-=U-;vVyylAC%;m+CFq`NYrN2nDm8ffGXB{zK&=Ec!ZeIRY$*Ns6(kbj_9v^=~&7-lg=5QK(Acc?$XS_xB zglm}~`pi_SEfPabP0g~j(0Ab7VLc;L9~(C79NojM26Mc~RHDLeXct5{6L@(qjo zb|=~Gy(#d8#pvc1?&`J(@UTzkh?vb}3$H3`gD8&bEr zZFv1~xsUK@X}jy_UT_130dDGo0CbcrR-DK8l8C4*Z|Hd@Kn|0yJSuG-ii$ZvlO*BC zj@ZEVg5|yq(7ye{rb+gnMnIt6-{?x=*$$a+E?Tgw%y-HZglP|hy4n2$nz2hdNtRVz zh>%`?=f?8m){%Cq(N?N|n`D0uev0@qUa^^kQF^4Vb6l18$AOSP zpEUec4#g$T7~w`3M}{#s9#*ZiM8G8N^DG}?9Yj*QqM!kDwAJu}ywPYbAr zcsXbV40DL}ggt?aspujoIlE9D{@zkvtp&7H9;6+C0%8D*k&X3^2o0$c zE~+Cxuh~rl%*TQ>!z4?%Qdh-(MFJvdv@eGWabOc!*G50)-(U{MpL$FP$sU$%@gd2u zH$|x2&Jlb(B$7j1rK?9!2;>i1T<$oeb+S3~GIV6~&hXRr7wh-;Q$cY?Ov~}3;31km z=zzP}8%|WAZ{bZi8(57p9Xh9IFVfHO0c}_ng%qSw; z0$Jb{A8Uh^3cp+LfbF5fphF{lbJ4R5KLpB(x`NgF)YOZ^(u~pEfaqd#4{V3YMd5&H z1_}@XKatHObl9>OH+2vMh8Djce|ZZ1+3eDtnO6L)uB2T~=ZcxYSp*VeG5oP7h-C~w z=mlC6DXGbbN;WscvmzqqzB0LNkZ%eJ(t86^T>mOOWR-%j`rFdkuI>WtF5IqcZ-Ckk z-+W2%V!y|aPHkIaP;!}RlTEu{Bxq6!@CQV+kZTA24oI2H*uo#?M~O;axRBSeG23}t z^!W6>_~~k+PxMf`GEBkqL(`hS_ULiQ72rqFpgKtl;T13t>AVPN3pLOv)l_6oMXZ&w zR5?}Vm`~KJjX+D;7;mOXL0IF9yn#MbNNPN&g&Za;Sf=1#h#Fznn(OH<3h7Nc3~;cT z?peO85l@Hni!g$s3giQ*D&$!7)Mo*>CW}xCn|2=Clb91Kk~zZGa9@yDRPkt9e)Nq2 zr=SS>Qg=1dSKvvsRbPh|aTbdbH&Bom-0_QrDdUfQ*I)p2_{5GCI{ew5~C3vd}fV^bsGk!JXWX3Y`83)?oWqZHl`CP~U-p zAK5+_38>$E8ORVhyr#I?n)>LJ_>M*DBZ(Q!fZy_xSWP#dC4>MzMqL#nn>*m z7I>NIfO2aEK%{a_VnGnOlmh0{y-vhj%{w(ggflz=-?jQG1zK7InfZ?5S=xl!StCX_ zTjhLXLcchAR05>`YNIM{qd{RIC|>0)QNV;ZYLr-rpi$is$P6RJWDZ13sYd$A_5l{VX!{~2E(T+YU&$C5y00#UBU>)hLvI0G7 z`Nx{JI868ULibem`qZ0Vd>wZABOj#$U7n^U+4G}eMIA;!2A>6>#q-;nV4Xm(J0p2dF$ z?yNzO@BU_44rVNs5&$6IpM6R^6W&hnmtqmD*?X<+_2{C=S~%Po*Lf)6Z+4~kG=4i{ z6WgKaHzwTT;Fb=f29W}$p!B|3ar3oL7!}XN>RDw<^1D+4dT&%P<>O>VVT2452Bq8) z9an{Ur&t7wj3=#l#EBr8T}|658aUaJl1t*=Ec-Hze9k*@$8sRoNPGxo^C%Zbl9KOo zX($C(>pTNjFWr9Ly&Pv2T$8YOEVPxAvTR~4Whq4?iV1&%E?gKVx0l5X7E9H4-)C%q zbctb|8$R|rnk*Z4{+(n!VeZq~e@@0r%55gS%|9EI3gfT6uy*C$I02gEyGYwg<)aU_ zP7KA}{@;lvk}5zHv!GA2YwU0d)SmDtu(Coc@~>Af^z09|K6aLFG87ATl4gkNftKhP zpMZY-u4;*#>x4Nk>tFYbdygEfv<16a*<$g|EhW6J4Bbv-q)+E6I!gA!s6q;rO{!|m z<^MJ;?pGTg&FsX|=0USgf7+?Syl^#RXYx+?4J>a}O=y*q)M5g5Y`_NAnovriMlEHQOW>fOMmA=)iO;=EH7Tuzx4RIi5|T6?gG z*3AL3*FPF6qd*D;ny3U8PrV8^LMpEKlyXtKDoe4edQ_Uv6K`3=D>VF!4O{3EECuor zb2){^ON}cuNEe0m5;LIM`2F$@Y3N3uq&q8$N{bA`B`QamuBTXzYd^s|Jsv4na^JOD#3U+ zode_U1Oc}TRqy7n82(GA>v=6bg5k0At;^EY&QY$W#fkk1=NlMw9aw&y?hgEEZSfi) z8PSF%!Y^R1H)nm(nmu_fVt_xFqI&Yv#abd;*8XSGi6cJzbri4mbU!;{&d)*Fhvw5u zY68;8C?4D>{nS$Z1ndlzCXKt7&J9sMx*+ZYmJFI+$a>Tuf<~OsWw3+T6Y6So7XR)` zp#!6GR7iA2bKV-Q5IP;$LiJX4wN{nsy+P2shs(n^{!x7pRbtfh?eET|`=0Cs#Uyn1`65YUBj`tM8T^Rte#PEK|M9{A3h`DOEf$5h7B ze6h^dIR(C3_c%(r*JUni z@%Hvoh>Y1iT~@$VqiG{_Qjd%dE^ExWogG46)Tvdf)!B=Qtk9NycqQhAk6l*!i$)y3 zLZ-j^vGhTeeDZA5x-LKo%l``;N^l)N$)X{3rGzWfpZ)?DoaNiF2Nnp+HKfc#_M;HJ zZmtZ6_nusHJ$VFp+GCtSKE^bGY!>Wsu|?CPBM63JpGGWYnp9E}vJNq=?55RHvJs3()}_sEri-xI%CHdesr zARH)E!}#-B@bG;=$deVbBSrLZ1;+R~l$Xv>G1oT~FgRyLpZEa#s=}d^sb+umW1aF^ zDF)Y;&5}v2$~M~c<-;SHWQI$dP_cbRP@0jmR(+GXW}CUk(*#7*G^f~rExLeg>{A22 zKVy0XnHG=I?e?o9 zh3IOp>lAEi3BJ5#f63em=!?V_9$HTAVS=rieBuUYHa;s4Ie0lR$yN%>d@W}zSj?VO z>Y9i)8HS~5qF{_k6dI%tODZ!w`;g@QD5817F1W-|y-A;4X&Ke=)6EXNTffA4v2P$~HcVx@F>EBe{DQS6ddAT#4|%<1k#qCC_Hw zwlo5n#Js$7qmC73trripd0f)hc8v$yb4t&Xs+#B;Co?oX{BEw+zs{mwD-z<^=7h3o z4>sWgBO&D9=Y0Y1%W0F>#z7Z(#MrvFZvJ-nBTFJATG&$xHUrUH*dyxmp6G# zP+A2Hh4cjqsxZc{Djwt2daF2M^MMb2^^W%AZ0@Zv`j1PQWYf;gk`b6cdbFs$Y7J%j z6@g4_p8V5EgxLF=P~}GN0MOpBo#S+dlu0wz@>S zO>TTHgO{f#W^h3-y(1Bt!0v?u4`_G5`PMV+Wl7;qT)uzELD&)1cgS&fESL|0LRgp> z5%?>peiW~YFcuuaZeow%SILEfo5Wvrl{vHExBiUZgmH^C@b?xMXKVW{AMp1WgHcgu ze(uK8Nl4mB8*^tTj{!>!X%(vjLS{1U8M0DEaiJ80Oym{`<4nvb_dG;*43j_h4&oGK z^>+rPr~blW<@1nrG!kS8JKELUw>zr8*=OSD(u5TvW63u$O-*I12F#(D-CSxL>;8^T zFozK+F@gIgrg#Vb9mbTiPBt0W1;PT(Vm%mnDy;2U%6uNV_6A6UWXHl)8AFf5YlwDL zks`GtUp25a8e-5xbIX(1QAK%Z>8|8iBU638sW8p5{B}sj+KEm|3 zX5}7FW}96wipU$bGz;wnXG`74Jz?0^9S!%z?^EgE*4KXrl{> zS^pDpEf_Ka=c1+r{4|M%Ce$k8@yN!d`U3N`%Bn_K-+Z84o`mMvl0#9`ABWbi7`v&# zIoKiJhIoAfVj+=+8hTAXPf`Ex-M_uZ!NZ!GFI{xlhPzyYQCik?a{ru+FqhEAcbX({ zZ7PdGWU$}nvqi_+CD@wxHb`8cOejUkp+ggWl3gcn#PIM1irM!TY;+c@)HuTY9BRMI z(>wOkAqA9_waKlmPj9Wk7Pqqft>SuR9B$ z)Kx8Na!Mckj8ZAj8f!Wji3%QFvaSkF@aknvGnae}+G+dMF0e|W#`#@oqE~hv?d|T} z+KUBmYi`Wg$pU4{S6+XzZ%D+ zH-a;ZftZQG%1pg)v?gq8+U-2Eu;d{~OMlKJ*mg%`(AenmndgHw?dA3A<~O4JkKTR^IK6M@DM$OMA>``ULeX zHrF-7r_*NqTbj5J!ms|4S1b2xZ1b6(tauV!l`^re2VWp=iT~ zq^f_ zv~<^yDk)z&1f-<91Oe%m?yjLraz;YwuERNZ-Lvjpcir;`ynFApe|Ud+pXc+^6k%B3 zz*sINvT*Ci*({FUCjd?!LG)I7N)x3`o(wd<1#K*q8{>(`wWO}7cqno1v2xmd8!Y)l zV#}NB>Rwcov~{zwo@E*iEXo7*o8R*SW#S70m9_WZhOp^kwPH>seH`GfT*4ypc3EPd zqlz^^sUg?5?Vs|^UDWVeD&nLSpFBgunhWMY7+02UMH~h;mqpN){=8hzs}|6#|8DUK zk1db~;!;gzXovM1fxPVZJmzl;Fs=Zx@sk$~_Y7sIkKkr9$!Tt7)=vXpcBrzSd=ZO# za+-_o>`WYKu1&PuSrh|7X|qsqKaoyEbnjHq+v~dM?xb0BXkJQR4GkFKc2XJeX%c5R zp)eSddeQ}`VsSCthAe#HPfT6y`N}Ft-IVc+ORd%RswMkfvsnn1U7jbJqjbYF@fIGT zF-XG0$IIf_m<{i5>?bbA;>jbS8bL|8ob7>`YS&>o`9{#H7lq<{p>uugFzC{* zlR<5*et%60a;N@44EjdLZ=z2LVo_X%w3k~sVHeHfKPf~;wE)r;CS68Z{Hen1+k=q_ zq>H+RrwOCGS;&m%6bTb4LiFCnU=$u{p^5X+nm=BCM0rj?k=r^`8ehgOm)bng?N0N+-UQ>1vj|y7vdRD?kc-+k z?(NdDhLs!ARymID?TlzXnKo!o>~1gDT_o+p(7}>0=^m5(MsE5%q)KU31K6L1W)(z5 z5;0{pM<`=ZvbeI)KSOdQi01pFms`-J9%Tv>%N46x^*u~~V0ooXiR~FZPuWphAaz|h z*uGNsXLymLf+$JJ%azVy8y$8>Ci|09Wg&}Jm+-LpQ~R7#qiwA9Z=PA4|4Fm|Uzi;a zoqj^A7@?H>y^W9oKsjkFX|fL>{$B|E|9fa?gj11QNm)fr8yn0%G@`7oGNia&f@R0W zraCmJqNBh$stg_+8Ha|)@C=3(PfpY#N-(AWQ)%Flu74azLjwx^mm|hGHZmSLKB%su zs5+^^GdQj`I{Z(6Y;O9W6aUL9!yaJ6Mvah}E+XZ`&_#UPMr!wAY$3J2Ss}K1P_*?Z zdOD_EwcTgX82(e+|LXd<2H?M|Dvz+Me&FU9;`z6$_V3LUCX6}-N|J_Li1otEF-XYk zIrCxB(SicJ_S20oQt1s{-exfH1#$DX`BYs7Sx;cr{CrG!K?Zd=2pRYHZ8MRWWjUdZ zy|o$2=g-mHQkiot#VHSNw4mTe8BX;BR0rK4=|rp+FZa7|sB6;}s?2P#wIWPuEwU>l zt{xwB+N}Ht-$Zssarxw%wKq`2#td3oE^1VCuOv!2J1&N;`Ia&jp{hkJwB=ynoRDru zt??u(8Cb8uVbA^I*IcYHpLmc>>s5O>by#^;E%n=ht}LW8+A}`h{PK9e^^glofD_^`_-`e^^-V2HH_}F6pKI&D6$r9KK16!w0cK+&Nu}RM3r5USXg07+QW6^Gao(+B%yZt3& zgQ#Jsldu^LaA_YRVb|%DJ=X3LCStMkJ73R(E2hxXyilvfx+p)XLHFG5&8WeyWx#r1 z4hhFkK#NZizs5=KktBE4SCLx|Yb7@*d7hE%Orxo2!y~7fi(z=Zq~O_(*X+`GraVYK z9n70a9yw9ww(CKM!&5x^E!y1NHCF94@6*CHki7mh@E7DGCkrLUL_#R=b1X%G(0S;- zevXH$3NeIstZ*ywt2I`ny*b-VgZtM;mS=gS`gIAydQU-5zh$CIsUDT@{=p}l?O{N^ zwmn4~G}Npvi{M80$9W$eUaUfo-90#`C`=MJ;-*GGQ1N3l{lm;AQE(qW1Ex?v7Z)n9 z$JXuuaO0vk;+Hu*G7%b2K3OlX=CTu=k(#q_B?uFnR(ybcJTQBzk+z7iSJE6jc>xxP zR#&QuJ8L$;zkE$Q+I-GOhXm(;mW+TBfjBwZztM_`zGza}^eGIs#b34j za@-whSdLmb>)7^Rt~(F7n(<>X#uS{>bJhmD!W5HXDO@Xi%W!=t-yJCacKvL4=&y&R zanbjSx0)IXL|lJ^RY%B-f*&)E-~Nn+!13B!SLkG~-lS{QrwzWpWTuI>>E5~A6{Jxs z@_-}8AS9t2qHMHQust{5?23CFI%^>tnC~wf^@5>FlyE-}EKMcS2neWQyN}Sq7Jxw+ zg-Gr>Igq;?P2JWP(2{fLGi-fUhcyUOQzZ1OSbh~5|5TYVM9u!;=7Ta7pTCKuTj6f` zvDIAEbWHP1#Z=?nn*-->DK%;5t7nK=LBz_Ii`!+oW;IdCB;j3kjD)v>cYo1?9kNGegjs>Gg21ET|cGQ;*1-ZxtD z7R=n+Q#rx~Z}Th{V=)`tN%UAkI4Jcw-aOMXFem$-S(ua?C1zT_pul>?+P{&eBZ@UX z|B1n{iTwU63mN%{*aqi@4u1BbmnX*! zNEfQepU<3$D<2z0FzJh7!g{0Ju+FdvJ2#olCxVMJv`{2D|c?8QLI9 z6M_M3>p&Yl7UdMpfQ>^U0v}nbB5JFYqj*!UdG@}G&666Nm!v;{02iD?f!?NIwMoWF z%RDYnaG*Y)r({s=B&3)tUn;qC>L|dfFJ1|r#{IR88D&OTlzuK$Tg{UpLkce_6 z@^?$9&=PExRTx&o4Mt33y)qS1`ZfvBRubL(0bwRf&en}3Q&VX~6TjP8iTYC9#yunL zEy0+MH?R6~(<8_3Wr%9?pBu_G0bA{|5_*x2V#~fY8TkO<8zCN6a-Fx=@a=|D^$Bj* z{doqYaC@YvinXPe;Ket|!8pVV}<)ZGM)uI_oBu}$Nx%2cW9jtN6NwSQr$GursRX>2^t@* z_f+g1&`1J{?~pwgh3_)BdLnWag0yF6PD-zD34Fg@te-3iIcJ5$Kw`?e2Il*ha=92P zx^?1t0un1Alw|nzq=A*{L+CHFI9Zjra57LI)-w%qt+7)@FAI_%DQslxGyY@AETzVd_kK1t3AnRQd*BdrlD!8+h3fGNBs5b%E?n%y?yGJ z+_onjf8G{gQ8E&-E0fA7q9p_#1>T8SUDrozrONHga{N-WF^{Xz`TeVbnRtFngjO zIekadJONLEIs3T!efH!_b8+nreCE!NWDzWGsCKs|gkr3z-of_g50yQDg#n&h#GK!L zihUAT8T4BgM+z=>fHUpi1wSE2dMr+FyQTOgk07Mr6)N!m#RIyYFvZ z)LHVJ<4T&!26c^zH`yGP6z17OF1X5#ti|uNE2)2a((B~>qc-At&6`Qf)hE?e-;c`V zZI1Z%nx~0Z#U58wq7@Rzp}}L;f94-kh`ijDNqQx@`3mD@Y`k^6Yu*^>En~^NzvP}ocohW&H0h>mH5h_w$ww3X z@zaH?&H4h7!-7ud0d7Wr87@3yTZ8FiYO`ZqM=!{%=wi>UX^w6na7Y(xh>93@OyrKQu+#+U>BCdqK0){LxYkfxx?tH9pc zj@3d{3+DDEey!5z@Vckzp;UGA{FbxlVIjHdi%wF@9ZEiS5+dG>7ME~>y@!F%yF049 zb9-kf7Hhycbw3sE_JArr%)y3&WjH?;LuME75#fRP9qPgeY@Vu|#rD>h1+tMN7 z`&O8{i!Zs)&u8J-SH{j!{0koH*EHIi-7s59bKG2@X#xvs`AI8+G zBACyO2-I)6M!;I|)Iq$q=UoWQJl9UFc7||3Q32p-JF80-S`(S|;Fs?|=(Q35#brmO z)4}T4#G|K&&4>kY2*6w1N9-+6F3$kPZA9Z)1EYMcujBtd&sX z`-HOFAlX(#=>rnraTRKeaPUNZzM#Z%^XGFhnlRn^16${#)am)6J4Qv_Omq-irB^u+ zep9-`L$c}Ka3p+dJaldFy8@RDQ6Afo4b*-;(7M6)NNC@9gVU1cyQgjg$zFe| z=AF>3c;N3seJa}f#o11>dwxd=r*iM`4g0+KWi7Aq(xoyV>CY|#dD;QTd09iK#pc1~ zGH))`!v~aFrc1~xU(r;2mW1Q%1eu2->l~Nv>mZ;9M0P?Ok}$Y6@wyvwZKD7Dfl`=t c<6U1=Om4JdbmvgAEQ|~d1qJ1ew5s$!0Lb7ki~s-t delta 169212 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 wq|X#lQJ;XlBO@T}~(z1O$YPxRUt)00wQj-~a#s diff --git a/tools/php-cs-fixer.phar b/tools/php-cs-fixer.phar index 7912db6ce094f4101aa950715df93304d4534373..9a03f3e971a3159dd8ba2e3f14d2d931b018b509 100755 GIT binary patch delta 165519 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%0ArIL|ZQU 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

F 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 delta 156190 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 diff --git a/tools/phpunit.phar b/tools/phpunit.phar index ccd14314..8d1aedb2 100755 --- a/tools/phpunit.phar +++ b/tools/phpunit.phar @@ -19,7 +19,7 @@ if (version_compare('7.3.0', PHP_VERSION, '>')) { fwrite( STDERR, sprintf( - 'PHPUnit 9.5.27 by Sebastian Bergmann and contributors.' . PHP_EOL . PHP_EOL . + 'PHPUnit 9.6.13 by Sebastian Bergmann and contributors.' . PHP_EOL . PHP_EOL . 'This version of PHPUnit requires PHP >= 7.3.' . PHP_EOL . 'You are using PHP %s (%s).' . PHP_EOL, PHP_VERSION, @@ -30,22 +30,31 @@ if (version_compare('7.3.0', PHP_VERSION, '>')) { die(1); } -foreach (['dom', 'json', 'libxml', 'mbstring', 'tokenizer', 'xml', 'xmlwriter'] as $extension) { - if (extension_loaded($extension)) { - continue; +$requiredExtensions = ['dom', 'json', 'libxml', 'mbstring', 'tokenizer', 'xml', 'xmlwriter']; + +$unavailableExtensions = array_filter( + $requiredExtensions, + static function ($extension) { + return !extension_loaded($extension); } +); +if ([] !== $unavailableExtensions) { fwrite( STDERR, sprintf( - 'PHPUnit requires the "%s" extension.' . PHP_EOL, - $extension + 'PHPUnit requires the "%s" extensions, but the "%s" %s not available.' . PHP_EOL, + implode('", "', $requiredExtensions), + implode('", "', $unavailableExtensions), + count($unavailableExtensions) === 1 ? 'extension is' : 'extensions are' ) ); die(1); } +unset($requiredExtensions, $unavailableExtensions); + if (__FILE__ === realpath($_SERVER['SCRIPT_NAME'])) { $execute = true; } else { @@ -67,9 +76,9 @@ if (isset($options['manifest'])) { unset($options); define('__PHPUNIT_PHAR__', str_replace(DIRECTORY_SEPARATOR, '/', __FILE__)); -define('__PHPUNIT_PHAR_ROOT__', 'phar://phpunit-9.5.27.phar'); +define('__PHPUNIT_PHAR_ROOT__', 'phar://phpunit-9.6.13.phar'); -Phar::mapPhar('phpunit-9.5.27.phar'); +Phar::mapPhar('phpunit-9.6.13.phar'); spl_autoload_register( function ($class) { @@ -79,6 +88,7 @@ spl_autoload_register( $classes = ['PHPUnit\\DeepCopy\\DeepCopy' => '/myclabs-deep-copy/DeepCopy/DeepCopy.php', 'PHPUnit\\DeepCopy\\Exception\\CloneException' => '/myclabs-deep-copy/DeepCopy/Exception/CloneException.php', 'PHPUnit\\DeepCopy\\Exception\\PropertyException' => '/myclabs-deep-copy/DeepCopy/Exception/PropertyException.php', + 'PHPUnit\\DeepCopy\\Filter\\ChainableFilter' => '/myclabs-deep-copy/DeepCopy/Filter/ChainableFilter.php', 'PHPUnit\\DeepCopy\\Filter\\Doctrine\\DoctrineCollectionFilter' => '/myclabs-deep-copy/DeepCopy/Filter/Doctrine/DoctrineCollectionFilter.php', 'PHPUnit\\DeepCopy\\Filter\\Doctrine\\DoctrineEmptyCollectionFilter' => '/myclabs-deep-copy/DeepCopy/Filter/Doctrine/DoctrineEmptyCollectionFilter.php', 'PHPUnit\\DeepCopy\\Filter\\Doctrine\\DoctrineProxyFilter' => '/myclabs-deep-copy/DeepCopy/Filter/Doctrine/DoctrineProxyFilter.php', @@ -156,6 +166,7 @@ spl_autoload_register( 'PHPUnit\\Framework\\Constraint\\LogicalXor' => '/phpunit/Framework/Constraint/Operator/LogicalXor.php', 'PHPUnit\\Framework\\Constraint\\ObjectEquals' => '/phpunit/Framework/Constraint/Object/ObjectEquals.php', 'PHPUnit\\Framework\\Constraint\\ObjectHasAttribute' => '/phpunit/Framework/Constraint/Object/ObjectHasAttribute.php', + 'PHPUnit\\Framework\\Constraint\\ObjectHasProperty' => '/phpunit/Framework/Constraint/Object/ObjectHasProperty.php', 'PHPUnit\\Framework\\Constraint\\Operator' => '/phpunit/Framework/Constraint/Operator/Operator.php', 'PHPUnit\\Framework\\Constraint\\RegularExpression' => '/phpunit/Framework/Constraint/String/RegularExpression.php', 'PHPUnit\\Framework\\Constraint\\SameSize' => '/phpunit/Framework/Constraint/Cardinality/SameSize.php', @@ -396,6 +407,7 @@ spl_autoload_register( 'PHPUnit\\PhpParser\\Lexer\\TokenEmulator\\MatchTokenEmulator' => '/nikic-php-parser/PhpParser/Lexer/TokenEmulator/MatchTokenEmulator.php', 'PHPUnit\\PhpParser\\Lexer\\TokenEmulator\\NullsafeTokenEmulator' => '/nikic-php-parser/PhpParser/Lexer/TokenEmulator/NullsafeTokenEmulator.php', 'PHPUnit\\PhpParser\\Lexer\\TokenEmulator\\NumericLiteralSeparatorEmulator' => '/nikic-php-parser/PhpParser/Lexer/TokenEmulator/NumericLiteralSeparatorEmulator.php', + 'PHPUnit\\PhpParser\\Lexer\\TokenEmulator\\ReadonlyFunctionTokenEmulator' => '/nikic-php-parser/PhpParser/Lexer/TokenEmulator/ReadonlyFunctionTokenEmulator.php', 'PHPUnit\\PhpParser\\Lexer\\TokenEmulator\\ReadonlyTokenEmulator' => '/nikic-php-parser/PhpParser/Lexer/TokenEmulator/ReadonlyTokenEmulator.php', 'PHPUnit\\PhpParser\\Lexer\\TokenEmulator\\ReverseEmulator' => '/nikic-php-parser/PhpParser/Lexer/TokenEmulator/ReverseEmulator.php', 'PHPUnit\\PhpParser\\Lexer\\TokenEmulator\\TokenEmulator' => '/nikic-php-parser/PhpParser/Lexer/TokenEmulator/TokenEmulator.php', @@ -906,8 +918,8 @@ spl_autoload_register( 'PHPUnit\\TextUI\\XmlConfiguration\\Migrator' => '/phpunit/TextUI/XmlConfiguration/Migration/Migrator.php', 'PHPUnit\\TextUI\\XmlConfiguration\\MoveAttributesFromFilterWhitelistToCoverage' => '/phpunit/TextUI/XmlConfiguration/Migration/Migrations/MoveAttributesFromFilterWhitelistToCoverage.php', 'PHPUnit\\TextUI\\XmlConfiguration\\MoveAttributesFromRootToCoverage' => '/phpunit/TextUI/XmlConfiguration/Migration/Migrations/MoveAttributesFromRootToCoverage.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\MoveWhitelistDirectoriesToCoverage' => '/phpunit/TextUI/XmlConfiguration/Migration/Migrations/MoveWhitelistDirectoriesToCoverage.php', 'PHPUnit\\TextUI\\XmlConfiguration\\MoveWhitelistExcludesToCoverage' => '/phpunit/TextUI/XmlConfiguration/Migration/Migrations/MoveWhitelistExcludesToCoverage.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\MoveWhitelistIncludesToCoverage' => '/phpunit/TextUI/XmlConfiguration/Migration/Migrations/MoveWhitelistIncludesToCoverage.php', 'PHPUnit\\TextUI\\XmlConfiguration\\PHPUnit' => '/phpunit/TextUI/XmlConfiguration/PHPUnit/PHPUnit.php', 'PHPUnit\\TextUI\\XmlConfiguration\\Php' => '/phpunit/TextUI/XmlConfiguration/PHP/Php.php', 'PHPUnit\\TextUI\\XmlConfiguration\\PhpHandler' => '/phpunit/TextUI/XmlConfiguration/PHP/PhpHandler.php', @@ -1103,6 +1115,7 @@ spl_autoload_register( 'Prophecy\\Call\\CallCenter' => '/phpspec-prophecy/Prophecy/Call/CallCenter.php', 'Prophecy\\Comparator\\ClosureComparator' => '/phpspec-prophecy/Prophecy/Comparator/ClosureComparator.php', 'Prophecy\\Comparator\\Factory' => '/phpspec-prophecy/Prophecy/Comparator/Factory.php', + 'Prophecy\\Comparator\\FactoryProvider' => '/phpspec-prophecy/Prophecy/Comparator/FactoryProvider.php', 'Prophecy\\Comparator\\ProphecyComparator' => '/phpspec-prophecy/Prophecy/Comparator/ProphecyComparator.php', 'Prophecy\\Doubler\\CachedDoubler' => '/phpspec-prophecy/Prophecy/Doubler/CachedDoubler.php', 'Prophecy\\Doubler\\ClassPatch\\ClassPatchInterface' => '/phpspec-prophecy/Prophecy/Doubler/ClassPatch/ClassPatchInterface.php', @@ -1152,7 +1165,6 @@ spl_autoload_register( 'Prophecy\\Exception\\Prophecy\\ProphecyException' => '/phpspec-prophecy/Prophecy/Exception/Prophecy/ProphecyException.php', 'Prophecy\\PhpDocumentor\\ClassAndInterfaceTagRetriever' => '/phpspec-prophecy/Prophecy/PhpDocumentor/ClassAndInterfaceTagRetriever.php', 'Prophecy\\PhpDocumentor\\ClassTagRetriever' => '/phpspec-prophecy/Prophecy/PhpDocumentor/ClassTagRetriever.php', - 'Prophecy\\PhpDocumentor\\LegacyClassTagRetriever' => '/phpspec-prophecy/Prophecy/PhpDocumentor/LegacyClassTagRetriever.php', 'Prophecy\\PhpDocumentor\\MethodTagRetrieverInterface' => '/phpspec-prophecy/Prophecy/PhpDocumentor/MethodTagRetrieverInterface.php', 'Prophecy\\Prediction\\CallPrediction' => '/phpspec-prophecy/Prophecy/Prediction/CallPrediction.php', 'Prophecy\\Prediction\\CallTimesPrediction' => '/phpspec-prophecy/Prophecy/Prediction/CallTimesPrediction.php', @@ -1176,7 +1188,7 @@ spl_autoload_register( } if (isset($classes[$class])) { - require_once 'phar://phpunit-9.5.27.phar' . $classes[$class]; + require_once 'phar://phpunit-9.6.13.phar' . $classes[$class]; } }, true, @@ -1186,6 +1198,7 @@ spl_autoload_register( foreach (['PHPUnit\\DeepCopy\\DeepCopy' => '/myclabs-deep-copy/DeepCopy/DeepCopy.php', 'PHPUnit\\DeepCopy\\Exception\\CloneException' => '/myclabs-deep-copy/DeepCopy/Exception/CloneException.php', 'PHPUnit\\DeepCopy\\Exception\\PropertyException' => '/myclabs-deep-copy/DeepCopy/Exception/PropertyException.php', + 'PHPUnit\\DeepCopy\\Filter\\ChainableFilter' => '/myclabs-deep-copy/DeepCopy/Filter/ChainableFilter.php', 'PHPUnit\\DeepCopy\\Filter\\Doctrine\\DoctrineCollectionFilter' => '/myclabs-deep-copy/DeepCopy/Filter/Doctrine/DoctrineCollectionFilter.php', 'PHPUnit\\DeepCopy\\Filter\\Doctrine\\DoctrineEmptyCollectionFilter' => '/myclabs-deep-copy/DeepCopy/Filter/Doctrine/DoctrineEmptyCollectionFilter.php', 'PHPUnit\\DeepCopy\\Filter\\Doctrine\\DoctrineProxyFilter' => '/myclabs-deep-copy/DeepCopy/Filter/Doctrine/DoctrineProxyFilter.php', @@ -1263,6 +1276,7 @@ foreach (['PHPUnit\\DeepCopy\\DeepCopy' => '/myclabs-deep-copy/DeepCopy/DeepCopy 'PHPUnit\\Framework\\Constraint\\LogicalXor' => '/phpunit/Framework/Constraint/Operator/LogicalXor.php', 'PHPUnit\\Framework\\Constraint\\ObjectEquals' => '/phpunit/Framework/Constraint/Object/ObjectEquals.php', 'PHPUnit\\Framework\\Constraint\\ObjectHasAttribute' => '/phpunit/Framework/Constraint/Object/ObjectHasAttribute.php', + 'PHPUnit\\Framework\\Constraint\\ObjectHasProperty' => '/phpunit/Framework/Constraint/Object/ObjectHasProperty.php', 'PHPUnit\\Framework\\Constraint\\Operator' => '/phpunit/Framework/Constraint/Operator/Operator.php', 'PHPUnit\\Framework\\Constraint\\RegularExpression' => '/phpunit/Framework/Constraint/String/RegularExpression.php', 'PHPUnit\\Framework\\Constraint\\SameSize' => '/phpunit/Framework/Constraint/Cardinality/SameSize.php', @@ -1503,6 +1517,7 @@ foreach (['PHPUnit\\DeepCopy\\DeepCopy' => '/myclabs-deep-copy/DeepCopy/DeepCopy 'PHPUnit\\PhpParser\\Lexer\\TokenEmulator\\MatchTokenEmulator' => '/nikic-php-parser/PhpParser/Lexer/TokenEmulator/MatchTokenEmulator.php', 'PHPUnit\\PhpParser\\Lexer\\TokenEmulator\\NullsafeTokenEmulator' => '/nikic-php-parser/PhpParser/Lexer/TokenEmulator/NullsafeTokenEmulator.php', 'PHPUnit\\PhpParser\\Lexer\\TokenEmulator\\NumericLiteralSeparatorEmulator' => '/nikic-php-parser/PhpParser/Lexer/TokenEmulator/NumericLiteralSeparatorEmulator.php', + 'PHPUnit\\PhpParser\\Lexer\\TokenEmulator\\ReadonlyFunctionTokenEmulator' => '/nikic-php-parser/PhpParser/Lexer/TokenEmulator/ReadonlyFunctionTokenEmulator.php', 'PHPUnit\\PhpParser\\Lexer\\TokenEmulator\\ReadonlyTokenEmulator' => '/nikic-php-parser/PhpParser/Lexer/TokenEmulator/ReadonlyTokenEmulator.php', 'PHPUnit\\PhpParser\\Lexer\\TokenEmulator\\ReverseEmulator' => '/nikic-php-parser/PhpParser/Lexer/TokenEmulator/ReverseEmulator.php', 'PHPUnit\\PhpParser\\Lexer\\TokenEmulator\\TokenEmulator' => '/nikic-php-parser/PhpParser/Lexer/TokenEmulator/TokenEmulator.php', @@ -2013,8 +2028,8 @@ foreach (['PHPUnit\\DeepCopy\\DeepCopy' => '/myclabs-deep-copy/DeepCopy/DeepCopy 'PHPUnit\\TextUI\\XmlConfiguration\\Migrator' => '/phpunit/TextUI/XmlConfiguration/Migration/Migrator.php', 'PHPUnit\\TextUI\\XmlConfiguration\\MoveAttributesFromFilterWhitelistToCoverage' => '/phpunit/TextUI/XmlConfiguration/Migration/Migrations/MoveAttributesFromFilterWhitelistToCoverage.php', 'PHPUnit\\TextUI\\XmlConfiguration\\MoveAttributesFromRootToCoverage' => '/phpunit/TextUI/XmlConfiguration/Migration/Migrations/MoveAttributesFromRootToCoverage.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\MoveWhitelistDirectoriesToCoverage' => '/phpunit/TextUI/XmlConfiguration/Migration/Migrations/MoveWhitelistDirectoriesToCoverage.php', 'PHPUnit\\TextUI\\XmlConfiguration\\MoveWhitelistExcludesToCoverage' => '/phpunit/TextUI/XmlConfiguration/Migration/Migrations/MoveWhitelistExcludesToCoverage.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\MoveWhitelistIncludesToCoverage' => '/phpunit/TextUI/XmlConfiguration/Migration/Migrations/MoveWhitelistIncludesToCoverage.php', 'PHPUnit\\TextUI\\XmlConfiguration\\PHPUnit' => '/phpunit/TextUI/XmlConfiguration/PHPUnit/PHPUnit.php', 'PHPUnit\\TextUI\\XmlConfiguration\\Php' => '/phpunit/TextUI/XmlConfiguration/PHP/Php.php', 'PHPUnit\\TextUI\\XmlConfiguration\\PhpHandler' => '/phpunit/TextUI/XmlConfiguration/PHP/PhpHandler.php', @@ -2210,6 +2225,7 @@ foreach (['PHPUnit\\DeepCopy\\DeepCopy' => '/myclabs-deep-copy/DeepCopy/DeepCopy 'Prophecy\\Call\\CallCenter' => '/phpspec-prophecy/Prophecy/Call/CallCenter.php', 'Prophecy\\Comparator\\ClosureComparator' => '/phpspec-prophecy/Prophecy/Comparator/ClosureComparator.php', 'Prophecy\\Comparator\\Factory' => '/phpspec-prophecy/Prophecy/Comparator/Factory.php', + 'Prophecy\\Comparator\\FactoryProvider' => '/phpspec-prophecy/Prophecy/Comparator/FactoryProvider.php', 'Prophecy\\Comparator\\ProphecyComparator' => '/phpspec-prophecy/Prophecy/Comparator/ProphecyComparator.php', 'Prophecy\\Doubler\\CachedDoubler' => '/phpspec-prophecy/Prophecy/Doubler/CachedDoubler.php', 'Prophecy\\Doubler\\ClassPatch\\ClassPatchInterface' => '/phpspec-prophecy/Prophecy/Doubler/ClassPatch/ClassPatchInterface.php', @@ -2259,7 +2275,6 @@ foreach (['PHPUnit\\DeepCopy\\DeepCopy' => '/myclabs-deep-copy/DeepCopy/DeepCopy 'Prophecy\\Exception\\Prophecy\\ProphecyException' => '/phpspec-prophecy/Prophecy/Exception/Prophecy/ProphecyException.php', 'Prophecy\\PhpDocumentor\\ClassAndInterfaceTagRetriever' => '/phpspec-prophecy/Prophecy/PhpDocumentor/ClassAndInterfaceTagRetriever.php', 'Prophecy\\PhpDocumentor\\ClassTagRetriever' => '/phpspec-prophecy/Prophecy/PhpDocumentor/ClassTagRetriever.php', - 'Prophecy\\PhpDocumentor\\LegacyClassTagRetriever' => '/phpspec-prophecy/Prophecy/PhpDocumentor/LegacyClassTagRetriever.php', 'Prophecy\\PhpDocumentor\\MethodTagRetrieverInterface' => '/phpspec-prophecy/Prophecy/PhpDocumentor/MethodTagRetrieverInterface.php', 'Prophecy\\Prediction\\CallPrediction' => '/phpspec-prophecy/Prophecy/Prediction/CallPrediction.php', 'Prophecy\\Prediction\\CallTimesPrediction' => '/phpspec-prophecy/Prophecy/Prediction/CallTimesPrediction.php', @@ -2280,7 +2295,7 @@ foreach (['PHPUnit\\DeepCopy\\DeepCopy' => '/myclabs-deep-copy/DeepCopy/DeepCopy 'Prophecy\\Prophet' => '/phpspec-prophecy/Prophecy/Prophet.php', 'Prophecy\\Util\\ExportUtil' => '/phpspec-prophecy/Prophecy/Util/ExportUtil.php', 'Prophecy\\Util\\StringUtil' => '/phpspec-prophecy/Prophecy/Util/StringUtil.php'] as $file) { - require_once 'phar://phpunit-9.5.27.phar' . $file; + require_once 'phar://phpunit-9.6.13.phar' . $file; } require __PHPUNIT_PHAR_ROOT__ . '/phpunit/Framework/Assert/Functions.php'; @@ -2304,100 +2319,104 @@ if ($execute) { } __HALT_COMPILER(); ?> -jphpunit-9.5.27.pharLdoctrine-instantiator/Doctrine/Instantiator/Exception/ExceptionInterface.phpecbRdoctrine-instantiator/Doctrine/Instantiator/Exception/InvalidArgumentException.phpecRdoctrine-instantiator/Doctrine/Instantiator/Exception/UnexpectedValueException.php:ec:_Y%[<doctrine-instantiator/Doctrine/Instantiator/Instantiator.phpec5Edoctrine-instantiator/Doctrine/Instantiator/InstantiatorInterface.php ec LȤdoctrine-instantiator/LICENSE$ec$ -͂ manifest.txtec`iV'myclabs-deep-copy/DeepCopy/DeepCopy.php>ec>ʼY7myclabs-deep-copy/DeepCopy/Exception/CloneException.phpec {ˤ:myclabs-deep-copy/DeepCopy/Exception/PropertyException.phpec3GzGmyclabs-deep-copy/DeepCopy/Filter/Doctrine/DoctrineCollectionFilter.php -ec -DgLmyclabs-deep-copy/DeepCopy/Filter/Doctrine/DoctrineEmptyCollectionFilter.phpec)$Bmyclabs-deep-copy/DeepCopy/Filter/Doctrine/DoctrineProxyFilter.phpec),myclabs-deep-copy/DeepCopy/Filter/Filter.phpdecdM0myclabs-deep-copy/DeepCopy/Filter/KeepFilter.phpecYn3myclabs-deep-copy/DeepCopy/Filter/ReplaceFilter.phpec3myclabs-deep-copy/DeepCopy/Filter/SetNullFilter.phpec䊉Dmyclabs-deep-copy/DeepCopy/Matcher/Doctrine/DoctrineProxyMatcher.phpecpr.myclabs-deep-copy/DeepCopy/Matcher/Matcher.phpec6myclabs-deep-copy/DeepCopy/Matcher/PropertyMatcher.phpec=Bv:myclabs-deep-copy/DeepCopy/Matcher/PropertyNameMatcher.phpecR:myclabs-deep-copy/DeepCopy/Matcher/PropertyTypeMatcher.php2ec2ZQͤ:myclabs-deep-copy/DeepCopy/Reflection/ReflectionHelper.php5ec5ىAmyclabs-deep-copy/DeepCopy/TypeFilter/Date/DateIntervalFilter.phpecƤ7myclabs-deep-copy/DeepCopy/TypeFilter/ReplaceFilter.phpecz;myclabs-deep-copy/DeepCopy/TypeFilter/ShallowCopyFilter.phpecؤ?myclabs-deep-copy/DeepCopy/TypeFilter/Spl/ArrayObjectFilter.phpec^Amyclabs-deep-copy/DeepCopy/TypeFilter/Spl/SplDoublyLinkedList.phpecv|Gmyclabs-deep-copy/DeepCopy/TypeFilter/Spl/SplDoublyLinkedListFilter.phpecT+4myclabs-deep-copy/DeepCopy/TypeFilter/TypeFilter.phpecVD6myclabs-deep-copy/DeepCopy/TypeMatcher/TypeMatcher.phpecQBŤ(myclabs-deep-copy/DeepCopy/deep_copy.phpecrxmyclabs-deep-copy/LICENSE5ec5ʭ˄nikic-php-parser/LICENSEec*&nikic-php-parser/PhpParser/Builder.phpec61nikic-php-parser/PhpParser/Builder/ClassConst.phpm ecm z-nikic-php-parser/PhpParser/Builder/Class_.phpecc32nikic-php-parser/PhpParser/Builder/Declaration.phpecE7/nikic-php-parser/PhpParser/Builder/EnumCase.php^ec^ɤ,nikic-php-parser/PhpParser/Builder/Enum_.php ec #3nikic-php-parser/PhpParser/Builder/FunctionLike.phpecZqe0nikic-php-parser/PhpParser/Builder/Function_.phpFecFux1nikic-php-parser/PhpParser/Builder/Interface_.php ec -nikic-php-parser/PhpParser/Builder/Method.phpec}1nikic-php-parser/PhpParser/Builder/Namespace_.php:ec:ˆp,nikic-php-parser/PhpParser/Builder/Param.php ec ֤/nikic-php-parser/PhpParser/Builder/Property.php|ec|O /nikic-php-parser/PhpParser/Builder/TraitUse.phpWecWL@9nikic-php-parser/PhpParser/Builder/TraitUseAdaptation.phpecUVx-nikic-php-parser/PhpParser/Builder/Trait_.phpeckj+nikic-php-parser/PhpParser/Builder/Use_.phpecs-nikic-php-parser/PhpParser/BuilderFactory.php+ec+޶-nikic-php-parser/PhpParser/BuilderHelpers.php$ec$6N&nikic-php-parser/PhpParser/Comment.phpecA*nikic-php-parser/PhpParser/Comment/Doc.phpxecxp;nikic-php-parser/PhpParser/ConstExprEvaluationException.php_ec_I 1nikic-php-parser/PhpParser/ConstExprEvaluator.phpl%ecl%evQ$nikic-php-parser/PhpParser/Error.phpecQZ+nikic-php-parser/PhpParser/ErrorHandler.php/ec/#\6nikic-php-parser/PhpParser/ErrorHandler/Collecting.phpec&Ȥ4nikic-php-parser/PhpParser/ErrorHandler/Throwing.phpecS}<0nikic-php-parser/PhpParser/Internal/DiffElem.php7ec7$.nikic-php-parser/PhpParser/Internal/Differ.php-ec-^Anikic-php-parser/PhpParser/Internal/PrintableNewAnonClassNode.php$ec$'c3nikic-php-parser/PhpParser/Internal/TokenStream.php#ec#f*nikic-php-parser/PhpParser/JsonDecoder.php ec xg$nikic-php-parser/PhpParser/Lexer.phpZecZSnikic-php-parser/PhpParser/Node/Expr/BinaryOp/NotIdentical.phpVecVh< -6nikic-php-parser/PhpParser/Node/Expr/BinaryOp/Plus.phpDecD' ,5nikic-php-parser/PhpParser/Node/Expr/BinaryOp/Pow.phpCecC;nikic-php-parser/PhpParser/Node/Expr/BinaryOp/ShiftLeft.phpOecOQ#<nikic-php-parser/PhpParser/Node/Expr/BinaryOp/ShiftRight.phpQecQǤ9nikic-php-parser/PhpParser/Node/Expr/BinaryOp/Smaller.phpJecJf@nikic-php-parser/PhpParser/Node/Expr/BinaryOp/SmallerOrEqual.phpYecY⍤;nikic-php-parser/PhpParser/Node/Expr/BinaryOp/Spaceship.phpPecPHƉ.3nikic-php-parser/PhpParser/Node/Expr/BitwiseNot.phpec~'3nikic-php-parser/PhpParser/Node/Expr/BooleanNot.phpecDC1nikic-php-parser/PhpParser/Node/Expr/CallLike.php&ec&KS0-nikic-php-parser/PhpParser/Node/Expr/Cast.phpAecA:Vs4nikic-php-parser/PhpParser/Node/Expr/Cast/Array_.phpecI|3nikic-php-parser/PhpParser/Node/Expr/Cast/Bool_.phpec V]S4nikic-php-parser/PhpParser/Node/Expr/Cast/Double.phpec>,2nikic-php-parser/PhpParser/Node/Expr/Cast/Int_.phpecc5nikic-php-parser/PhpParser/Node/Expr/Cast/Object_.phpec5nikic-php-parser/PhpParser/Node/Expr/Cast/String_.phpec4nikic-php-parser/PhpParser/Node/Expr/Cast/Unset_.phpec1Ӥ8nikic-php-parser/PhpParser/Node/Expr/ClassConstFetch.phpec/nikic-php-parser/PhpParser/Node/Expr/Clone_.phpecW0nikic-php-parser/PhpParser/Node/Expr/Closure.php -ec -U;3nikic-php-parser/PhpParser/Node/Expr/ClosureUse.phpech3nikic-php-parser/PhpParser/Node/Expr/ConstFetch.phpec޶%/nikic-php-parser/PhpParser/Node/Expr/Empty_.phpec'.nikic-php-parser/PhpParser/Node/Expr/Error.phpeca\6nikic-php-parser/PhpParser/Node/Expr/ErrorSuppress.phpecg.nikic-php-parser/PhpParser/Node/Expr/Eval_.phpec356.nikic-php-parser/PhpParser/Node/Expr/Exit_.phpec1nikic-php-parser/PhpParser/Node/Expr/FuncCall.php3ec3%A1nikic-php-parser/PhpParser/Node/Expr/Include_.phpeci4nikic-php-parser/PhpParser/Node/Expr/Instanceof_.phpaeca< /nikic-php-parser/PhpParser/Node/Expr/Isset_.phpecI.nikic-php-parser/PhpParser/Node/Expr/List_.phpec/nikic-php-parser/PhpParser/Node/Expr/Match_.phpecW 3nikic-php-parser/PhpParser/Node/Expr/MethodCall.phpOecODWX-nikic-php-parser/PhpParser/Node/Expr/New_.phpeciĤ;nikic-php-parser/PhpParser/Node/Expr/NullsafeMethodCall.phpfecfɤ>nikic-php-parser/PhpParser/Node/Expr/NullsafePropertyFetch.phpec /N0nikic-php-parser/PhpParser/Node/Expr/PostDec.phpecw:0nikic-php-parser/PhpParser/Node/Expr/PostInc.phpecᦦ!/nikic-php-parser/PhpParser/Node/Expr/PreDec.phpectg/nikic-php-parser/PhpParser/Node/Expr/PreInc.phpecYä/nikic-php-parser/PhpParser/Node/Expr/Print_.phpecnX6nikic-php-parser/PhpParser/Node/Expr/PropertyFetch.phpecɾ2nikic-php-parser/PhpParser/Node/Expr/ShellExec.phpechy3nikic-php-parser/PhpParser/Node/Expr/StaticCall.phpeece<nikic-php-parser/PhpParser/Node/Expr/StaticPropertyFetch.php&ec&ܐ0nikic-php-parser/PhpParser/Node/Expr/Ternary.phpecQͤ/nikic-php-parser/PhpParser/Node/Expr/Throw_.phpec ?3nikic-php-parser/PhpParser/Node/Expr/UnaryMinus.phpeclA2nikic-php-parser/PhpParser/Node/Expr/UnaryPlus.phpece̤1nikic-php-parser/PhpParser/Node/Expr/Variable.phpecmJr2nikic-php-parser/PhpParser/Node/Expr/YieldFrom.phpecw8/nikic-php-parser/PhpParser/Node/Expr/Yield_.php\ec\ 0nikic-php-parser/PhpParser/Node/FunctionLike.phpec4ͤ.nikic-php-parser/PhpParser/Node/Identifier.phpecJa4nikic-php-parser/PhpParser/Node/IntersectionType.phpeco,nikic-php-parser/PhpParser/Node/MatchArm.phpec+m6(nikic-php-parser/PhpParser/Node/Name.php ec Q酯7nikic-php-parser/PhpParser/Node/Name/FullyQualified.phpec 1nikic-php-parser/PhpParser/Node/Name/Relative.phpecǛEf0nikic-php-parser/PhpParser/Node/NullableType.phpec6C)nikic-php-parser/PhpParser/Node/Param.phpbecbMߤ*nikic-php-parser/PhpParser/Node/Scalar.phpkeck,ߤ2nikic-php-parser/PhpParser/Node/Scalar/DNumber.phpecx3H:3nikic-php-parser/PhpParser/Node/Scalar/Encapsed.phpecRU=nikic-php-parser/PhpParser/Node/Scalar/EncapsedStringPart.phpec%2nikic-php-parser/PhpParser/Node/Scalar/LNumber.php ec z5nikic-php-parser/PhpParser/Node/Scalar/MagicConst.phpcecc,xG<nikic-php-parser/PhpParser/Node/Scalar/MagicConst/Class_.phpTecT㨘X9nikic-php-parser/PhpParser/Node/Scalar/MagicConst/Dir.phpMecMal:nikic-php-parser/PhpParser/Node/Scalar/MagicConst/File.phpPecP#?nikic-php-parser/PhpParser/Node/Scalar/MagicConst/Function_.php]ec]HnY:nikic-php-parser/PhpParser/Node/Scalar/MagicConst/Line.phpPecPM4<nikic-php-parser/PhpParser/Node/Scalar/MagicConst/Method.phpVecVΤ@nikic-php-parser/PhpParser/Node/Scalar/MagicConst/Namespace_.php`ec`><nikic-php-parser/PhpParser/Node/Scalar/MagicConst/Trait_.phpTecTd2nikic-php-parser/PhpParser/Node/Scalar/String_.phpqecqT$Q(nikic-php-parser/PhpParser/Node/Stmt.phpecv2//nikic-php-parser/PhpParser/Node/Stmt/Break_.phpec֤.nikic-php-parser/PhpParser/Node/Stmt/Case_.phpleclu/nikic-php-parser/PhpParser/Node/Stmt/Catch_.php|ec|*V>3nikic-php-parser/PhpParser/Node/Stmt/ClassConst.phpeceX?ͤ2nikic-php-parser/PhpParser/Node/Stmt/ClassLike.php ec 04nikic-php-parser/PhpParser/Node/Stmt/ClassMethod.phpecX/nikic-php-parser/PhpParser/Node/Stmt/Class_.phpuecu_ļ/nikic-php-parser/PhpParser/Node/Stmt/Const_.phpec2nikic-php-parser/PhpParser/Node/Stmt/Continue_.phpec7nikic-php-parser/PhpParser/Node/Stmt/DeclareDeclare.phpecƀ1nikic-php-parser/PhpParser/Node/Stmt/Declare_.phpec.. -,nikic-php-parser/PhpParser/Node/Stmt/Do_.phpBecB -@.nikic-php-parser/PhpParser/Node/Stmt/Echo_.phpec͘Ƥ0nikic-php-parser/PhpParser/Node/Stmt/ElseIf_.phpIecIEä.nikic-php-parser/PhpParser/Node/Stmt/Else_.phpec|ä1nikic-php-parser/PhpParser/Node/Stmt/EnumCase.phpecjD.nikic-php-parser/PhpParser/Node/Stmt/Enum_.php=ec=dA3nikic-php-parser/PhpParser/Node/Stmt/Expression.phpecRK1nikic-php-parser/PhpParser/Node/Stmt/Finally_.phpec1A-nikic-php-parser/PhpParser/Node/Stmt/For_.php>ec>NQ1nikic-php-parser/PhpParser/Node/Stmt/Foreach_.phpoeco92nikic-php-parser/PhpParser/Node/Stmt/Function_.php, -ec, -nL0nikic-php-parser/PhpParser/Node/Stmt/Global_.phpec.nikic-php-parser/PhpParser/Node/Stmt/Goto_.phpecVyPn1nikic-php-parser/PhpParser/Node/Stmt/GroupUse.php -ec -ߎ0|5nikic-php-parser/PhpParser/Node/Stmt/HaltCompiler.phpec];,nikic-php-parser/PhpParser/Node/Stmt/If_.php:ec:u٤3nikic-php-parser/PhpParser/Node/Stmt/InlineHTML.phpec]3nikic-php-parser/PhpParser/Node/Stmt/Interface_.phpecL/Ǥ.nikic-php-parser/PhpParser/Node/Stmt/Label.phpecӤ3nikic-php-parser/PhpParser/Node/Stmt/Namespace_.phpec㹀,nikic-php-parser/PhpParser/Node/Stmt/Nop.php@ec@G1nikic-php-parser/PhpParser/Node/Stmt/Property.phpO -ecO -=9nikic-php-parser/PhpParser/Node/Stmt/PropertyProperty.phpec҉0nikic-php-parser/PhpParser/Node/Stmt/Return_.phpecͿ)e2nikic-php-parser/PhpParser/Node/Stmt/StaticVar.phpec0nikic-php-parser/PhpParser/Node/Stmt/Static_.phpec0nikic-php-parser/PhpParser/Node/Stmt/Switch_.php5ec5FFY/nikic-php-parser/PhpParser/Node/Stmt/Throw_.phpec1nikic-php-parser/PhpParser/Node/Stmt/TraitUse.phpecg,;nikic-php-parser/PhpParser/Node/Stmt/TraitUseAdaptation.phpeca8Anikic-php-parser/PhpParser/Node/Stmt/TraitUseAdaptation/Alias.phpAecAdFnikic-php-parser/PhpParser/Node/Stmt/TraitUseAdaptation/Precedence.phpZecZP֤/nikic-php-parser/PhpParser/Node/Stmt/Trait_.phpec$v1nikic-php-parser/PhpParser/Node/Stmt/TryCatch.php$ec$W/nikic-php-parser/PhpParser/Node/Stmt/Unset_.phpec=oB/nikic-php-parser/PhpParser/Node/Stmt/UseUse.phpdecdb-nikic-php-parser/PhpParser/Node/Stmt/Use_.phplecl9=|/nikic-php-parser/PhpParser/Node/Stmt/While_.phpEecEա-nikic-php-parser/PhpParser/Node/UnionType.phpecԛ5nikic-php-parser/PhpParser/Node/VarLikeIdentifier.phpec&7nikic-php-parser/PhpParser/Node/VariadicPlaceholder.phpecP+nikic-php-parser/PhpParser/NodeAbstract.phpZecZ׻@)nikic-php-parser/PhpParser/NodeDumper.phpdecdY l)nikic-php-parser/PhpParser/NodeFinder.php ec ,nikic-php-parser/PhpParser/NodeTraverser.php]'ec]'TG:Ƥ5nikic-php-parser/PhpParser/NodeTraverserInterface.php|ec|Ś *nikic-php-parser/PhpParser/NodeVisitor.phpec39nikic-php-parser/PhpParser/NodeVisitor/CloningVisitor.phpec"WJ9nikic-php-parser/PhpParser/NodeVisitor/FindingVisitor.phpecB>nikic-php-parser/PhpParser/NodeVisitor/FirstFindingVisitor.phpecm4Ť7nikic-php-parser/PhpParser/NodeVisitor/NameResolver.phpm&ecm&f[&@nikic-php-parser/PhpParser/NodeVisitor/NodeConnectingVisitor.phpecu -äBnikic-php-parser/PhpParser/NodeVisitor/ParentConnectingVisitor.phpuecuME2nikic-php-parser/PhpParser/NodeVisitorAbstract.phpec%nikic-php-parser/PhpParser/Parser.php}ec}{.nikic-php-parser/PhpParser/Parser/Multiple.phpecsF)7*nikic-php-parser/PhpParser/Parser/Php5.php*(ec*(2l=*nikic-php-parser/PhpParser/Parser/Php7.phpSHecSHt55,nikic-php-parser/PhpParser/Parser/Tokens.php&ec&<-nikic-php-parser/PhpParser/ParserAbstract.phpec6(,nikic-php-parser/PhpParser/ParserFactory.phpec -~&5nikic-php-parser/PhpParser/PrettyPrinter/Standard.phpec'4nikic-php-parser/PhpParser/PrettyPrinterAbstract.phpecܤobject-enumerator/LICENSEecy{object-reflector/LICENSEec9vphar-io-manifest/LICENSE`ec`p+phar-io-manifest/ManifestDocumentMapper.phpec:#phar-io-manifest/ManifestLoader.phpec.-a'phar-io-manifest/ManifestSerializer.phpecrp:phar-io-manifest/exceptions/ElementCollectionException.phpec I)phar-io-manifest/exceptions/Exception.phpec?phar-io-manifest/exceptions/InvalidApplicationNameException.phpec:@>5phar-io-manifest/exceptions/InvalidEmailException.phpec<3phar-io-manifest/exceptions/InvalidUrlException.phpec 9phar-io-manifest/exceptions/ManifestDocumentException.phpec!P4@phar-io-manifest/exceptions/ManifestDocumentLoadingException.phpHecHǃ?phar-io-manifest/exceptions/ManifestDocumentMapperException.phpec:9z8phar-io-manifest/exceptions/ManifestElementException.phpecA47phar-io-manifest/exceptions/ManifestLoaderException.phpecD>'phar-io-manifest/values/Application.phpecI$ۤ+phar-io-manifest/values/ApplicationName.php;ec;D"phar-io-manifest/values/Author.phpecF,phar-io-manifest/values/AuthorCollection.phpeco4phar-io-manifest/values/AuthorCollectionIterator.php3ec3џ,phar-io-manifest/values/BundledComponent.php@ec@DP`6phar-io-manifest/values/BundledComponentCollection.php ec ¾W6>phar-io-manifest/values/BundledComponentCollectionIterator.phpecVh0phar-io-manifest/values/CopyrightInformation.phpPecP ai!phar-io-manifest/values/Email.phpNecNZ&%phar-io-manifest/values/Extension.phpecq}#phar-io-manifest/values/Library.phpecO#phar-io-manifest/values/License.phpec&!o$phar-io-manifest/values/Manifest.php -ec -=La3phar-io-manifest/values/PhpExtensionRequirement.phpec11phar-io-manifest/values/PhpVersionRequirement.phpecm?'phar-io-manifest/values/Requirement.phpecd1phar-io-manifest/values/RequirementCollection.phpecP9phar-io-manifest/values/RequirementCollectionIterator.phpjecjܭ: phar-io-manifest/values/Type.phpec=%phar-io-manifest/values/Url.phpec͚&phar-io-manifest/xml/AuthorElement.phprecr<0phar-io-manifest/xml/AuthorElementCollection.php,ec,-'phar-io-manifest/xml/BundlesElement.phpSecSWN>)phar-io-manifest/xml/ComponentElement.phpyecyݤ3phar-io-manifest/xml/ComponentElementCollection.php5ec5(\(phar-io-manifest/xml/ContainsElement.phpnecnf)phar-io-manifest/xml/CopyrightElement.phpec7*phar-io-manifest/xml/ElementCollection.phpec@ #phar-io-manifest/xml/ExtElement.php ec y>-phar-io-manifest/xml/ExtElementCollection.php#ec#E)phar-io-manifest/xml/ExtensionElement.php}ec}0'phar-io-manifest/xml/LicenseElement.phpoeco%:')phar-io-manifest/xml/ManifestDocument.php - ec - 4(phar-io-manifest/xml/ManifestElement.php4ec4#phar-io-manifest/xml/PhpElement.phpecB:5(phar-io-manifest/xml/RequiresElement.php$ec$>!phar-io-version/BuildMetaData.phpecphar-io-version/LICENSE&ec&Ҫ $phar-io-version/PreReleaseSuffix.phpec:phar-io-version/Version.phpecu#+phar-io-version/VersionConstraintParser.phpT ecT Ф*phar-io-version/VersionConstraintValue.phpH -ecH -F{~4!phar-io-version/VersionNumber.phpecO19phar-io-version/constraints/AbstractVersionConstraint.phpecxB9phar-io-version/constraints/AndVersionConstraintGroup.phpecY4phar-io-version/constraints/AnyVersionConstraint.phpRecR #6phar-io-version/constraints/ExactVersionConstraint.phpec!Ephar-io-version/constraints/GreaterThanOrEqualToVersionConstraint.phpecVU8phar-io-version/constraints/OrVersionConstraintGroup.phpecM%Fphar-io-version/constraints/SpecificMajorAndMinorVersionConstraint.phpecɍ>phar-io-version/constraints/SpecificMajorVersionConstraint.phpec`9q:1phar-io-version/constraints/VersionConstraint.phpeceDq(phar-io-version/exceptions/Exception.phpec$eb?phar-io-version/exceptions/InvalidPreReleaseSuffixException.phpecҵ6phar-io-version/exceptions/InvalidVersionException.phpec4/S7phar-io-version/exceptions/NoBuildMetaDataException.phpec]:phar-io-version/exceptions/NoPreReleaseSuffixException.phpecT4Dphar-io-version/exceptions/UnsupportedVersionConstraintException.phpec9"php-code-coverage/CodeCoverage.phpBecBw#php-code-coverage/Driver/Driver.phpec3A'php-code-coverage/Driver/PcovDriver.phpJecJ)php-code-coverage/Driver/PhpdbgDriver.php^ -ec^ -_2G%php-code-coverage/Driver/Selector.php ec 6]*php-code-coverage/Driver/Xdebug2Driver.phpA ecA *php-code-coverage/Driver/Xdebug3Driver.php ec h*Jphp-code-coverage/Exception/BranchAndPathCoverageNotSupportedException.phpec77Fphp-code-coverage/Exception/DeadCodeDetectionNotSupportedException.phpecCphp-code-coverage/Exception/DirectoryCouldNotBeCreatedException.phpec)php-code-coverage/Exception/Exception.php}ec}z8php-code-coverage/Exception/InvalidArgumentException.phpecK.nFphp-code-coverage/Exception/NoCodeCoverageDriverAvailableException.php/ec/6R]php-code-coverage/Exception/NoCodeCoverageDriverWithPathCoverageSupportAvailableException.phpaeca"A/php-code-coverage/Exception/ParserException.phpec,/Dphp-code-coverage/Exception/PathExistsButIsNotDirectoryException.phpec.29php-code-coverage/Exception/PcovNotAvailableException.phpaecaj;php-code-coverage/Exception/PhpdbgNotAvailableException.php`ec`3php-code-coverage/Exception/ReflectionException.phpeck)?php-code-coverage/Exception/ReportAlreadyFinalizedException.php:ec:d%6Iphp-code-coverage/Exception/StaticAnalysisCacheNotConfiguredException.phpec}6php-code-coverage/Exception/TestIdMissingException.phpec -Cphp-code-coverage/Exception/UnintentionallyCoveredCodeException.php+ec+Q_ª=php-code-coverage/Exception/WriteOperationFailedException.phpec(e;php-code-coverage/Exception/WrongXdebugVersionException.phpec Ȥ:php-code-coverage/Exception/Xdebug2NotEnabledException.phpfecf,':php-code-coverage/Exception/Xdebug3NotEnabledException.phpyecy<>;php-code-coverage/Exception/XdebugNotAvailableException.phpeeceNG,php-code-coverage/Exception/XmlException.phpecWܤphp-code-coverage/Filter.php ec 4php-code-coverage/LICENSEec?i'php-code-coverage/Node/AbstractNode.php:ec:%^"php-code-coverage/Node/Builder.php ec 2N$php-code-coverage/Node/CrapIndex.phpec# $php-code-coverage/Node/Directory.php -&ec -&}php-code-coverage/Node/File.phpKecK{#php-code-coverage/Node/Iterator.phpecHk/php-code-coverage/ProcessedCodeCoverageData.php$ec$')php-code-coverage/RawCodeCoverageData.php8ec8}Rs#php-code-coverage/Report/Clover.php'ec'l4&php-code-coverage/Report/Cobertura.php(1ec(1q#php-code-coverage/Report/Crap4j.phpecJ#D(php-code-coverage/Report/Html/Facade.php"ec";ڤ*php-code-coverage/Report/Html/Renderer.phpU!ecU!}4php-code-coverage/Report/Html/Renderer/Dashboard.phpC ecC L+4php-code-coverage/Report/Html/Renderer/Directory.php ec (/php-code-coverage/Report/Html/Renderer/File.php7ec7#lؤBphp-code-coverage/Report/Html/Renderer/Template/branches.html.distech2+Fphp-code-coverage/Report/Html/Renderer/Template/coverage_bar.html.dist'ec'O}Mphp-code-coverage/Report/Html/Renderer/Template/coverage_bar_branch.html.dist'ec'O}Ephp-code-coverage/Report/Html/Renderer/Template/css/bootstrap.min.cssyecyĤ>php-code-coverage/Report/Html/Renderer/Template/css/custom.cssecAphp-code-coverage/Report/Html/Renderer/Template/css/nv.d3.min.cssX%ecX%0,@php-code-coverage/Report/Html/Renderer/Template/css/octicons.cssXecX'#=php-code-coverage/Report/Html/Renderer/Template/css/style.cssecw>Cphp-code-coverage/Report/Html/Renderer/Template/dashboard.html.distGecGlJphp-code-coverage/Report/Html/Renderer/Template/dashboard_branch.html.distGecGlCphp-code-coverage/Report/Html/Renderer/Template/directory.html.distecGMJphp-code-coverage/Report/Html/Renderer/Template/directory_branch.html.distjecjHHphp-code-coverage/Report/Html/Renderer/Template/directory_item.html.distAecAdsOphp-code-coverage/Report/Html/Renderer/Template/directory_item_branch.html.dist;ec;mۤ>php-code-coverage/Report/Html/Renderer/Template/file.html.distecGd=rEphp-code-coverage/Report/Html/Renderer/Template/file_branch.html.dist ec gCphp-code-coverage/Report/Html/Renderer/Template/file_item.html.distrecr/yJphp-code-coverage/Report/Html/Renderer/Template/file_item_branch.html.distlecl-Cphp-code-coverage/Report/Html/Renderer/Template/icons/file-code.svg0ec0QUUHphp-code-coverage/Report/Html/Renderer/Template/icons/file-directory.svgecZCphp-code-coverage/Report/Html/Renderer/Template/js/bootstrap.min.jscecc"#<php-code-coverage/Report/Html/Renderer/Template/js/d3.min.jsPecPhb:php-code-coverage/Report/Html/Renderer/Template/js/file.jsecb䆤@php-code-coverage/Report/Html/Renderer/Template/js/jquery.min.js@^ec@^ ?php-code-coverage/Report/Html/Renderer/Template/js/nv.d3.min.jsRecRphp-code-coverage/Report/Html/Renderer/Template/line.html.distec{?php-code-coverage/Report/Html/Renderer/Template/lines.html.disteecedf Ephp-code-coverage/Report/Html/Renderer/Template/method_item.html.distecjפLphp-code-coverage/Report/Html/Renderer/Template/method_item_branch.html.distecyĎk?php-code-coverage/Report/Html/Renderer/Template/paths.html.distec*'ݤ php-code-coverage/Report/PHP.phpec$&a!php-code-coverage/Report/Text.php'ec' 6H1php-code-coverage/Report/Xml/BuildInformation.php ec T3e)php-code-coverage/Report/Xml/Coverage.php+ec+9E*php-code-coverage/Report/Xml/Directory.phpecAf'php-code-coverage/Report/Xml/Facade.php"ec"O}%php-code-coverage/Report/Xml/File.php+ec+g׃'php-code-coverage/Report/Xml/Method.phpWecW ʤ%php-code-coverage/Report/Xml/Node.php3ec3(php-code-coverage/Report/Xml/Project.phpfecfPe'php-code-coverage/Report/Xml/Report.php ec HC'php-code-coverage/Report/Xml/Source.phpzecz'1&php-code-coverage/Report/Xml/Tests.phpec'php-code-coverage/Report/Xml/Totals.phpec:6%php-code-coverage/Report/Xml/Unit.phpecY0php-code-coverage/StaticAnalysis/CacheWarmer.php)ec) ۤ8php-code-coverage/StaticAnalysis/CachingFileAnalyser.phpec,K&;php-code-coverage/StaticAnalysis/CodeUnitFindingVisitor.php&ec&xTgBphp-code-coverage/StaticAnalysis/ExecutableLinesFindingVisitor.php[(ec[(0%1php-code-coverage/StaticAnalysis/FileAnalyser.phpecJ?php-code-coverage/StaticAnalysis/IgnoredLinesFindingVisitor.php ec 8php-code-coverage/StaticAnalysis/ParsingFileAnalyser.phpec^%php-code-coverage/Util/Filesystem.phpec%php-code-coverage/Util/Percentage.phpecphp-code-coverage/Version.phpecyE{php-file-iterator/Facade.php% -ec% -Τphp-file-iterator/Factory.phpecg ,php-file-iterator/Iterator.phpZ ecZ C܎php-file-iterator/LICENSEeco:php-invoker/Invoker.phpec+L$php-invoker/exceptions/Exception.phprecrvvduDphp-invoker/exceptions/ProcessControlExtensionNotLoadedException.phpec +php-invoker/exceptions/TimeoutException.phpec.php-text-template/LICENSEecuphp-text-template/Template.php( ec( *php-text-template/exceptions/Exception.phpyecyn9php-text-template/exceptions/InvalidArgumentException.phpecaM1php-text-template/exceptions/RuntimeException.phpecYm'php-timer/Duration.php -ec -tXyphp-timer/LICENSEecx$php-timer/ResourceUsageFormatter.phpecPھphp-timer/Timer.phpeccAɤ"php-timer/exceptions/Exception.phpnecniuۤ/php-timer/exceptions/NoActiveTimerException.phpecl٤Ephp-timer/exceptions/TimeSinceStartOfRequestNotAvailableException.phpec$b+phpdocumentor-reflection-common/Element.php ec %(phpdocumentor-reflection-common/File.phpecI))phpdocumentor-reflection-common/Fqsen.phpec?'phpdocumentor-reflection-common/LICENSE9ec9*2Ȑ,phpdocumentor-reflection-common/Location.phpec=(+phpdocumentor-reflection-common/Project.phpecJ2phpdocumentor-reflection-common/ProjectFactory.php_ec_j\".phpdocumentor-reflection-docblock/DocBlock.phpecHx>$:phpdocumentor-reflection-docblock/DocBlock/Description.php ec 54Aphpdocumentor-reflection-docblock/DocBlock/DescriptionFactory.phpecd=<phpdocumentor-reflection-docblock/DocBlock/ExampleFinder.php,ec,ׯf9phpdocumentor-reflection-docblock/DocBlock/Serializer.php ec ]Aphpdocumentor-reflection-docblock/DocBlock/StandardTagFactory.php0ec0<2phpdocumentor-reflection-docblock/DocBlock/Tag.phpec9phpdocumentor-reflection-docblock/DocBlock/TagFactory.phpecJMx:phpdocumentor-reflection-docblock/DocBlock/Tags/Author.php ec ;phpdocumentor-reflection-docblock/DocBlock/Tags/BaseTag.phpecZr:phpdocumentor-reflection-docblock/DocBlock/Tags/Covers.phpg -ecg +kphpunit-9.6.13.pharLdoctrine-instantiator/Doctrine/Instantiator/Exception/ExceptionInterface.php(4 ebRdoctrine-instantiator/Doctrine/Instantiator/Exception/InvalidArgumentException.php(4 eRdoctrine-instantiator/Doctrine/Instantiator/Exception/UnexpectedValueException.php:(4 e:_Y%[<doctrine-instantiator/Doctrine/Instantiator/Instantiator.php(4 e87Edoctrine-instantiator/Doctrine/Instantiator/InstantiatorInterface.php (4 e LȤdoctrine-instantiator/LICENSE$(4 e$ +͂ manifest.txt(4 eRoa'myclabs-deep-copy/DeepCopy/DeepCopy.php(4 eLä7myclabs-deep-copy/DeepCopy/Exception/CloneException.php(4 e {ˤ:myclabs-deep-copy/DeepCopy/Exception/PropertyException.php(4 e3Gz5myclabs-deep-copy/DeepCopy/Filter/ChainableFilter.php(4 eTE Gmyclabs-deep-copy/DeepCopy/Filter/Doctrine/DoctrineCollectionFilter.php +(4 e +DgLmyclabs-deep-copy/DeepCopy/Filter/Doctrine/DoctrineEmptyCollectionFilter.php(4 e)$Bmyclabs-deep-copy/DeepCopy/Filter/Doctrine/DoctrineProxyFilter.php(4 e),myclabs-deep-copy/DeepCopy/Filter/Filter.phpd(4 edM0myclabs-deep-copy/DeepCopy/Filter/KeepFilter.php(4 eYn3myclabs-deep-copy/DeepCopy/Filter/ReplaceFilter.php(4 e3myclabs-deep-copy/DeepCopy/Filter/SetNullFilter.php(4 e䊉Dmyclabs-deep-copy/DeepCopy/Matcher/Doctrine/DoctrineProxyMatcher.php(4 epr.myclabs-deep-copy/DeepCopy/Matcher/Matcher.php(4 e6myclabs-deep-copy/DeepCopy/Matcher/PropertyMatcher.php(4 e=Bv:myclabs-deep-copy/DeepCopy/Matcher/PropertyNameMatcher.php(4 eR:myclabs-deep-copy/DeepCopy/Matcher/PropertyTypeMatcher.php2(4 e2ZQͤ:myclabs-deep-copy/DeepCopy/Reflection/ReflectionHelper.php5(4 e5ىAmyclabs-deep-copy/DeepCopy/TypeFilter/Date/DateIntervalFilter.php(4 eƤ7myclabs-deep-copy/DeepCopy/TypeFilter/ReplaceFilter.php(4 ez;myclabs-deep-copy/DeepCopy/TypeFilter/ShallowCopyFilter.php(4 eؤ?myclabs-deep-copy/DeepCopy/TypeFilter/Spl/ArrayObjectFilter.php(4 e^Amyclabs-deep-copy/DeepCopy/TypeFilter/Spl/SplDoublyLinkedList.php(4 ev|Gmyclabs-deep-copy/DeepCopy/TypeFilter/Spl/SplDoublyLinkedListFilter.php(4 eT+4myclabs-deep-copy/DeepCopy/TypeFilter/TypeFilter.php(4 eVD6myclabs-deep-copy/DeepCopy/TypeMatcher/TypeMatcher.php(4 eQBŤ(myclabs-deep-copy/DeepCopy/deep_copy.php(4 erxmyclabs-deep-copy/LICENSE5(4 e5ʭ˄nikic-php-parser/LICENSE(4 e*&nikic-php-parser/PhpParser/Builder.php(4 e61nikic-php-parser/PhpParser/Builder/ClassConst.php(4 e-nikic-php-parser/PhpParser/Builder/Class_.php(4 ec32nikic-php-parser/PhpParser/Builder/Declaration.php(4 eE7/nikic-php-parser/PhpParser/Builder/EnumCase.php^(4 e^ueT,nikic-php-parser/PhpParser/Builder/Enum_.php (4 e #3nikic-php-parser/PhpParser/Builder/FunctionLike.php(4 eZqe0nikic-php-parser/PhpParser/Builder/Function_.phpF(4 eFux1nikic-php-parser/PhpParser/Builder/Interface_.php (4 e -nikic-php-parser/PhpParser/Builder/Method.php(4 e}1nikic-php-parser/PhpParser/Builder/Namespace_.php:(4 e:ˆp,nikic-php-parser/PhpParser/Builder/Param.php{(4 e{j4/nikic-php-parser/PhpParser/Builder/Property.php|(4 e|O /nikic-php-parser/PhpParser/Builder/TraitUse.phpW(4 eWL@9nikic-php-parser/PhpParser/Builder/TraitUseAdaptation.php(4 eUVx-nikic-php-parser/PhpParser/Builder/Trait_.php(4 ekj+nikic-php-parser/PhpParser/Builder/Use_.php(4 es-nikic-php-parser/PhpParser/BuilderFactory.php+(4 e+ $-nikic-php-parser/PhpParser/BuilderHelpers.php$(4 e$:@&nikic-php-parser/PhpParser/Comment.php(4 eA*nikic-php-parser/PhpParser/Comment/Doc.phpx(4 exp;nikic-php-parser/PhpParser/ConstExprEvaluationException.php_(4 e_I 1nikic-php-parser/PhpParser/ConstExprEvaluator.phpl%(4 el%evQ$nikic-php-parser/PhpParser/Error.php(4 eQZ+nikic-php-parser/PhpParser/ErrorHandler.php/(4 e/#\6nikic-php-parser/PhpParser/ErrorHandler/Collecting.php(4 e&Ȥ4nikic-php-parser/PhpParser/ErrorHandler/Throwing.php(4 eS}<0nikic-php-parser/PhpParser/Internal/DiffElem.php7(4 e7$.nikic-php-parser/PhpParser/Internal/Differ.php-(4 e-^Anikic-php-parser/PhpParser/Internal/PrintableNewAnonClassNode.php(4 e<3nikic-php-parser/PhpParser/Internal/TokenStream.php#(4 e#f*nikic-php-parser/PhpParser/JsonDecoder.php (4 e xg$nikic-php-parser/PhpParser/Lexer.phpyZ(4 eyZq⃤.nikic-php-parser/PhpParser/Lexer/Emulative.phpO#(4 eO#ܲݤDnikic-php-parser/PhpParser/Lexer/TokenEmulator/AttributeEmulator.php(4 erLnikic-php-parser/PhpParser/Lexer/TokenEmulator/CoaleseEqualTokenEmulator.php (4 e *§oDnikic-php-parser/PhpParser/Lexer/TokenEmulator/EnumTokenEmulator.php(4 eLFHnikic-php-parser/PhpParser/Lexer/TokenEmulator/ExplicitOctalEmulator.php(4 e*#Lnikic-php-parser/PhpParser/Lexer/TokenEmulator/FlexibleDocStringEmulator.phpn (4 en 1Bnikic-php-parser/PhpParser/Lexer/TokenEmulator/FnTokenEmulator.php(4 ejBnikic-php-parser/PhpParser/Lexer/TokenEmulator/KeywordEmulator.php(4 e`atEnikic-php-parser/PhpParser/Lexer/TokenEmulator/MatchTokenEmulator.php(4 ec/Hnikic-php-parser/PhpParser/Lexer/TokenEmulator/NullsafeTokenEmulator.php(4 e:&ERnikic-php-parser/PhpParser/Lexer/TokenEmulator/NumericLiteralSeparatorEmulator.phpV(4 eVPnikic-php-parser/PhpParser/Lexer/TokenEmulator/ReadonlyFunctionTokenEmulator.php(4 ee!ćHnikic-php-parser/PhpParser/Lexer/TokenEmulator/ReadonlyTokenEmulator.phpL(4 eL +`9JBnikic-php-parser/PhpParser/Lexer/TokenEmulator/ReverseEmulator.php(4 eI}@nikic-php-parser/PhpParser/Lexer/TokenEmulator/TokenEmulator.phpu(4 euD4h*nikic-php-parser/PhpParser/NameContext.php%(4 e%G-#nikic-php-parser/PhpParser/Node.php(4 eyݗ'nikic-php-parser/PhpParser/Node/Arg.php0(4 e0q H-nikic-php-parser/PhpParser/Node/Attribute.phpH(4 eHhqK2nikic-php-parser/PhpParser/Node/AttributeGroup.php(4 eB9/nikic-php-parser/PhpParser/Node/ComplexType.phpS(4 eS(*nikic-php-parser/PhpParser/Node/Const_.php(4 eZ(nikic-php-parser/PhpParser/Node/Expr.php(4 eh傤6nikic-php-parser/PhpParser/Node/Expr/ArrayDimFetch.phpM(4 eMIY2nikic-php-parser/PhpParser/Node/Expr/ArrayItem.phpx(4 ex| 2/nikic-php-parser/PhpParser/Node/Expr/Array_.php8(4 e8;p6nikic-php-parser/PhpParser/Node/Expr/ArrowFunction.php (4 e w3/nikic-php-parser/PhpParser/Node/Expr/Assign.php(4 e1nikic-php-parser/PhpParser/Node/Expr/AssignOp.php(4 e,<nikic-php-parser/PhpParser/Node/Expr/AssignOp/BitwiseAnd.php(4 eu;nikic-php-parser/PhpParser/Node/Expr/AssignOp/BitwiseOr.php(4 e;<nikic-php-parser/PhpParser/Node/Expr/AssignOp/BitwiseXor.php(4 elϚ:nikic-php-parser/PhpParser/Node/Expr/AssignOp/Coalesce.php(4 eq,8nikic-php-parser/PhpParser/Node/Expr/AssignOp/Concat.php(4 e5nikic-php-parser/PhpParser/Node/Expr/AssignOp/Div.php(4 eYP +7nikic-php-parser/PhpParser/Node/Expr/AssignOp/Minus.php(4 e隤5nikic-php-parser/PhpParser/Node/Expr/AssignOp/Mod.php(4 e]10Y5nikic-php-parser/PhpParser/Node/Expr/AssignOp/Mul.php(4 eπ/6nikic-php-parser/PhpParser/Node/Expr/AssignOp/Plus.php(4 e&|5nikic-php-parser/PhpParser/Node/Expr/AssignOp/Pow.php(4 eyV;nikic-php-parser/PhpParser/Node/Expr/AssignOp/ShiftLeft.php(4 e<nikic-php-parser/PhpParser/Node/Expr/AssignOp/ShiftRight.php(4 es*2nikic-php-parser/PhpParser/Node/Expr/AssignRef.phpH(4 eHE`ob1nikic-php-parser/PhpParser/Node/Expr/BinaryOp.phpo(4 eo Ѥ<nikic-php-parser/PhpParser/Node/Expr/BinaryOp/BitwiseAnd.phpP(4 eP6L6;nikic-php-parser/PhpParser/Node/Expr/BinaryOp/BitwiseOr.phpN(4 eN_|<nikic-php-parser/PhpParser/Node/Expr/BinaryOp/BitwiseXor.phpP(4 eP~Ƥ<nikic-php-parser/PhpParser/Node/Expr/BinaryOp/BooleanAnd.phpQ(4 eQ5v;nikic-php-parser/PhpParser/Node/Expr/BinaryOp/BooleanOr.phpO(4 eOeӸ:nikic-php-parser/PhpParser/Node/Expr/BinaryOp/Coalesce.phpM(4 eMY 8nikic-php-parser/PhpParser/Node/Expr/BinaryOp/Concat.phpH(4 eH @q5nikic-php-parser/PhpParser/Node/Expr/BinaryOp/Div.phpB(4 eBi7nikic-php-parser/PhpParser/Node/Expr/BinaryOp/Equal.phpG(4 eGݙʤ9nikic-php-parser/PhpParser/Node/Expr/BinaryOp/Greater.phpJ(4 eJ4ͤ@nikic-php-parser/PhpParser/Node/Expr/BinaryOp/GreaterOrEqual.phpY(4 eY^ز;nikic-php-parser/PhpParser/Node/Expr/BinaryOp/Identical.phpP(4 eP"<nikic-php-parser/PhpParser/Node/Expr/BinaryOp/LogicalAnd.phpR(4 eRi;nikic-php-parser/PhpParser/Node/Expr/BinaryOp/LogicalOr.phpO(4 eO@<nikic-php-parser/PhpParser/Node/Expr/BinaryOp/LogicalXor.phpR(4 eR4e7nikic-php-parser/PhpParser/Node/Expr/BinaryOp/Minus.phpF(4 eF$Lˤ5nikic-php-parser/PhpParser/Node/Expr/BinaryOp/Mod.phpB(4 eBʤ5nikic-php-parser/PhpParser/Node/Expr/BinaryOp/Mul.phpB(4 eB|:nikic-php-parser/PhpParser/Node/Expr/BinaryOp/NotEqual.phpM(4 eM>nikic-php-parser/PhpParser/Node/Expr/BinaryOp/NotIdentical.phpV(4 eVh< +6nikic-php-parser/PhpParser/Node/Expr/BinaryOp/Plus.phpD(4 eD' ,5nikic-php-parser/PhpParser/Node/Expr/BinaryOp/Pow.phpC(4 eC;nikic-php-parser/PhpParser/Node/Expr/BinaryOp/ShiftLeft.phpO(4 eOQ#<nikic-php-parser/PhpParser/Node/Expr/BinaryOp/ShiftRight.phpQ(4 eQǤ9nikic-php-parser/PhpParser/Node/Expr/BinaryOp/Smaller.phpJ(4 eJf@nikic-php-parser/PhpParser/Node/Expr/BinaryOp/SmallerOrEqual.phpY(4 eY⍤;nikic-php-parser/PhpParser/Node/Expr/BinaryOp/Spaceship.phpP(4 ePHƉ.3nikic-php-parser/PhpParser/Node/Expr/BitwiseNot.php(4 e~'3nikic-php-parser/PhpParser/Node/Expr/BooleanNot.php(4 eDC1nikic-php-parser/PhpParser/Node/Expr/CallLike.php&(4 e&KS0-nikic-php-parser/PhpParser/Node/Expr/Cast.phpA(4 eA:Vs4nikic-php-parser/PhpParser/Node/Expr/Cast/Array_.php(4 eI|3nikic-php-parser/PhpParser/Node/Expr/Cast/Bool_.php(4 e V]S4nikic-php-parser/PhpParser/Node/Expr/Cast/Double.php(4 e>,2nikic-php-parser/PhpParser/Node/Expr/Cast/Int_.php(4 ec5nikic-php-parser/PhpParser/Node/Expr/Cast/Object_.php(4 e5nikic-php-parser/PhpParser/Node/Expr/Cast/String_.php(4 e4nikic-php-parser/PhpParser/Node/Expr/Cast/Unset_.php(4 e1Ӥ8nikic-php-parser/PhpParser/Node/Expr/ClassConstFetch.php(4 eE/nikic-php-parser/PhpParser/Node/Expr/Clone_.php(4 eW0nikic-php-parser/PhpParser/Node/Expr/Closure.php +(4 e +U;3nikic-php-parser/PhpParser/Node/Expr/ClosureUse.php(4 eh3nikic-php-parser/PhpParser/Node/Expr/ConstFetch.php(4 e޶%/nikic-php-parser/PhpParser/Node/Expr/Empty_.php(4 e'.nikic-php-parser/PhpParser/Node/Expr/Error.php(4 ea\6nikic-php-parser/PhpParser/Node/Expr/ErrorSuppress.php(4 eg.nikic-php-parser/PhpParser/Node/Expr/Eval_.php(4 e356.nikic-php-parser/PhpParser/Node/Expr/Exit_.php(4 e1nikic-php-parser/PhpParser/Node/Expr/FuncCall.php3(4 e3%A1nikic-php-parser/PhpParser/Node/Expr/Include_.php(4 ei4nikic-php-parser/PhpParser/Node/Expr/Instanceof_.phpa(4 ea< /nikic-php-parser/PhpParser/Node/Expr/Isset_.php(4 eI.nikic-php-parser/PhpParser/Node/Expr/List_.php(4 e/nikic-php-parser/PhpParser/Node/Expr/Match_.php(4 eW 3nikic-php-parser/PhpParser/Node/Expr/MethodCall.phpO(4 eODWX-nikic-php-parser/PhpParser/Node/Expr/New_.php(4 eiĤ;nikic-php-parser/PhpParser/Node/Expr/NullsafeMethodCall.phpf(4 efɤ>nikic-php-parser/PhpParser/Node/Expr/NullsafePropertyFetch.php(4 e /N0nikic-php-parser/PhpParser/Node/Expr/PostDec.php(4 ew:0nikic-php-parser/PhpParser/Node/Expr/PostInc.php(4 eᦦ!/nikic-php-parser/PhpParser/Node/Expr/PreDec.php(4 etg/nikic-php-parser/PhpParser/Node/Expr/PreInc.php(4 eYä/nikic-php-parser/PhpParser/Node/Expr/Print_.php(4 enX6nikic-php-parser/PhpParser/Node/Expr/PropertyFetch.php(4 eɾ2nikic-php-parser/PhpParser/Node/Expr/ShellExec.php(4 ehy3nikic-php-parser/PhpParser/Node/Expr/StaticCall.phpe(4 ee<nikic-php-parser/PhpParser/Node/Expr/StaticPropertyFetch.php&(4 e&ܐ0nikic-php-parser/PhpParser/Node/Expr/Ternary.php(4 eQͤ/nikic-php-parser/PhpParser/Node/Expr/Throw_.php(4 e ?3nikic-php-parser/PhpParser/Node/Expr/UnaryMinus.php(4 elA2nikic-php-parser/PhpParser/Node/Expr/UnaryPlus.php(4 ee̤1nikic-php-parser/PhpParser/Node/Expr/Variable.php(4 emJr2nikic-php-parser/PhpParser/Node/Expr/YieldFrom.php(4 ew8/nikic-php-parser/PhpParser/Node/Expr/Yield_.php\(4 e\ 0nikic-php-parser/PhpParser/Node/FunctionLike.php(4 e4ͤ.nikic-php-parser/PhpParser/Node/Identifier.php(4 eJa4nikic-php-parser/PhpParser/Node/IntersectionType.php(4 eo,nikic-php-parser/PhpParser/Node/MatchArm.php(4 e+m6(nikic-php-parser/PhpParser/Node/Name.php (4 e 7nikic-php-parser/PhpParser/Node/Name/FullyQualified.php(4 e 1nikic-php-parser/PhpParser/Node/Name/Relative.php(4 eǛEf0nikic-php-parser/PhpParser/Node/NullableType.php(4 e6C)nikic-php-parser/PhpParser/Node/Param.phpb(4 ebMߤ*nikic-php-parser/PhpParser/Node/Scalar.phpk(4 ek,ߤ2nikic-php-parser/PhpParser/Node/Scalar/DNumber.php(4 ex3H:3nikic-php-parser/PhpParser/Node/Scalar/Encapsed.php(4 eRU=nikic-php-parser/PhpParser/Node/Scalar/EncapsedStringPart.php(4 e%2nikic-php-parser/PhpParser/Node/Scalar/LNumber.php (4 e z5nikic-php-parser/PhpParser/Node/Scalar/MagicConst.phpc(4 ec,xG<nikic-php-parser/PhpParser/Node/Scalar/MagicConst/Class_.phpT(4 eT㨘X9nikic-php-parser/PhpParser/Node/Scalar/MagicConst/Dir.phpM(4 eMal:nikic-php-parser/PhpParser/Node/Scalar/MagicConst/File.phpP(4 eP#?nikic-php-parser/PhpParser/Node/Scalar/MagicConst/Function_.php](4 e]HnY:nikic-php-parser/PhpParser/Node/Scalar/MagicConst/Line.phpP(4 ePM4<nikic-php-parser/PhpParser/Node/Scalar/MagicConst/Method.phpV(4 eVΤ@nikic-php-parser/PhpParser/Node/Scalar/MagicConst/Namespace_.php`(4 e`><nikic-php-parser/PhpParser/Node/Scalar/MagicConst/Trait_.phpT(4 eTd2nikic-php-parser/PhpParser/Node/Scalar/String_.phpq(4 eqT$Q(nikic-php-parser/PhpParser/Node/Stmt.php(4 ev2//nikic-php-parser/PhpParser/Node/Stmt/Break_.php(4 e֤.nikic-php-parser/PhpParser/Node/Stmt/Case_.phpl(4 elu/nikic-php-parser/PhpParser/Node/Stmt/Catch_.php|(4 e|*V>3nikic-php-parser/PhpParser/Node/Stmt/ClassConst.php| (4 e| K:d2nikic-php-parser/PhpParser/Node/Stmt/ClassLike.php (4 e 04nikic-php-parser/PhpParser/Node/Stmt/ClassMethod.php(4 eX/nikic-php-parser/PhpParser/Node/Stmt/Class_.phpu(4 eu_ļ/nikic-php-parser/PhpParser/Node/Stmt/Const_.php(4 e2nikic-php-parser/PhpParser/Node/Stmt/Continue_.php(4 e7nikic-php-parser/PhpParser/Node/Stmt/DeclareDeclare.php(4 eƀ1nikic-php-parser/PhpParser/Node/Stmt/Declare_.php(4 e.. +,nikic-php-parser/PhpParser/Node/Stmt/Do_.phpB(4 eB +@.nikic-php-parser/PhpParser/Node/Stmt/Echo_.php(4 e͘Ƥ0nikic-php-parser/PhpParser/Node/Stmt/ElseIf_.phpI(4 eIEä.nikic-php-parser/PhpParser/Node/Stmt/Else_.php(4 e|ä1nikic-php-parser/PhpParser/Node/Stmt/EnumCase.php(4 ejD.nikic-php-parser/PhpParser/Node/Stmt/Enum_.php=(4 e=dA3nikic-php-parser/PhpParser/Node/Stmt/Expression.php(4 eRK1nikic-php-parser/PhpParser/Node/Stmt/Finally_.php(4 e1A-nikic-php-parser/PhpParser/Node/Stmt/For_.php>(4 e>NQ1nikic-php-parser/PhpParser/Node/Stmt/Foreach_.phpo(4 eo92nikic-php-parser/PhpParser/Node/Stmt/Function_.php, +(4 e, +nL0nikic-php-parser/PhpParser/Node/Stmt/Global_.php(4 e.nikic-php-parser/PhpParser/Node/Stmt/Goto_.php(4 eVyPn1nikic-php-parser/PhpParser/Node/Stmt/GroupUse.php +(4 e +ߎ0|5nikic-php-parser/PhpParser/Node/Stmt/HaltCompiler.php(4 e];,nikic-php-parser/PhpParser/Node/Stmt/If_.php:(4 e:u٤3nikic-php-parser/PhpParser/Node/Stmt/InlineHTML.php(4 e]3nikic-php-parser/PhpParser/Node/Stmt/Interface_.php(4 eL/Ǥ.nikic-php-parser/PhpParser/Node/Stmt/Label.php(4 eӤ3nikic-php-parser/PhpParser/Node/Stmt/Namespace_.php(4 e㹀,nikic-php-parser/PhpParser/Node/Stmt/Nop.php@(4 e@G1nikic-php-parser/PhpParser/Node/Stmt/Property.phpO +(4 eO +=9nikic-php-parser/PhpParser/Node/Stmt/PropertyProperty.php(4 e҉0nikic-php-parser/PhpParser/Node/Stmt/Return_.php(4 eͿ)e2nikic-php-parser/PhpParser/Node/Stmt/StaticVar.php(4 e0nikic-php-parser/PhpParser/Node/Stmt/Static_.php(4 e0nikic-php-parser/PhpParser/Node/Stmt/Switch_.php5(4 e5FFY/nikic-php-parser/PhpParser/Node/Stmt/Throw_.php(4 e1nikic-php-parser/PhpParser/Node/Stmt/TraitUse.php(4 eg,;nikic-php-parser/PhpParser/Node/Stmt/TraitUseAdaptation.php(4 ea8Anikic-php-parser/PhpParser/Node/Stmt/TraitUseAdaptation/Alias.phpA(4 eAdFnikic-php-parser/PhpParser/Node/Stmt/TraitUseAdaptation/Precedence.phpZ(4 eZP֤/nikic-php-parser/PhpParser/Node/Stmt/Trait_.php(4 e$v1nikic-php-parser/PhpParser/Node/Stmt/TryCatch.php$(4 e$W/nikic-php-parser/PhpParser/Node/Stmt/Unset_.php(4 e=oB/nikic-php-parser/PhpParser/Node/Stmt/UseUse.phpd(4 edb-nikic-php-parser/PhpParser/Node/Stmt/Use_.phpl(4 el9=|/nikic-php-parser/PhpParser/Node/Stmt/While_.phpE(4 eEա-nikic-php-parser/PhpParser/Node/UnionType.php(4 eԛ5nikic-php-parser/PhpParser/Node/VarLikeIdentifier.php(4 e&7nikic-php-parser/PhpParser/Node/VariadicPlaceholder.php(4 eP+nikic-php-parser/PhpParser/NodeAbstract.phpZ(4 eZ׻@)nikic-php-parser/PhpParser/NodeDumper.phpd(4 edY l)nikic-php-parser/PhpParser/NodeFinder.php (4 e ,nikic-php-parser/PhpParser/NodeTraverser.php]'(4 e]'TG:Ƥ5nikic-php-parser/PhpParser/NodeTraverserInterface.php|(4 e|Ś *nikic-php-parser/PhpParser/NodeVisitor.php(4 e39nikic-php-parser/PhpParser/NodeVisitor/CloningVisitor.php(4 e"WJ9nikic-php-parser/PhpParser/NodeVisitor/FindingVisitor.php(4 eB>nikic-php-parser/PhpParser/NodeVisitor/FirstFindingVisitor.php(4 em4Ť7nikic-php-parser/PhpParser/NodeVisitor/NameResolver.phpq&(4 eq&ǠG@nikic-php-parser/PhpParser/NodeVisitor/NodeConnectingVisitor.php(4 eu +äBnikic-php-parser/PhpParser/NodeVisitor/ParentConnectingVisitor.phpu(4 euME2nikic-php-parser/PhpParser/NodeVisitorAbstract.php(4 e%nikic-php-parser/PhpParser/Parser.php}(4 e}{.nikic-php-parser/PhpParser/Parser/Multiple.php(4 esF)7*nikic-php-parser/PhpParser/Parser/Php5.php+(4 e+1*nikic-php-parser/PhpParser/Parser/Php7.phpT(4 eT!V`,nikic-php-parser/PhpParser/Parser/Tokens.php&(4 e&<-nikic-php-parser/PhpParser/ParserAbstract.phpT(4 eT'[,nikic-php-parser/PhpParser/ParserFactory.php(4 e +~&5nikic-php-parser/PhpParser/PrettyPrinter/Standard.php+(4 e+4nikic-php-parser/PhpParser/PrettyPrinterAbstract.phpQ(4 eQ%jobject-enumerator/LICENSE(4 ey{object-reflector/LICENSE(4 e9vphar-io-manifest/LICENSE`(4 e`p+phar-io-manifest/ManifestDocumentMapper.php(4 e:#phar-io-manifest/ManifestLoader.php(4 e.-a'phar-io-manifest/ManifestSerializer.php(4 erp:phar-io-manifest/exceptions/ElementCollectionException.php(4 e I)phar-io-manifest/exceptions/Exception.php(4 e?phar-io-manifest/exceptions/InvalidApplicationNameException.php(4 e:@>5phar-io-manifest/exceptions/InvalidEmailException.php(4 e<3phar-io-manifest/exceptions/InvalidUrlException.php(4 e 9phar-io-manifest/exceptions/ManifestDocumentException.php(4 e!P4@phar-io-manifest/exceptions/ManifestDocumentLoadingException.phpH(4 eHǃ?phar-io-manifest/exceptions/ManifestDocumentMapperException.php(4 e:9z8phar-io-manifest/exceptions/ManifestElementException.php(4 eA47phar-io-manifest/exceptions/ManifestLoaderException.php(4 eD>'phar-io-manifest/values/Application.php(4 eI$ۤ+phar-io-manifest/values/ApplicationName.php;(4 e;D"phar-io-manifest/values/Author.php(4 eF,phar-io-manifest/values/AuthorCollection.php(4 eo4phar-io-manifest/values/AuthorCollectionIterator.php3(4 e3џ,phar-io-manifest/values/BundledComponent.php@(4 e@DP`6phar-io-manifest/values/BundledComponentCollection.php (4 e ¾W6>phar-io-manifest/values/BundledComponentCollectionIterator.php(4 eVh0phar-io-manifest/values/CopyrightInformation.phpP(4 eP ai!phar-io-manifest/values/Email.phpN(4 eNZ&%phar-io-manifest/values/Extension.php(4 eq}#phar-io-manifest/values/Library.php(4 eO#phar-io-manifest/values/License.php(4 e&!o$phar-io-manifest/values/Manifest.php +(4 e +=La3phar-io-manifest/values/PhpExtensionRequirement.php(4 e11phar-io-manifest/values/PhpVersionRequirement.php(4 em?'phar-io-manifest/values/Requirement.php(4 ed1phar-io-manifest/values/RequirementCollection.php(4 eP9phar-io-manifest/values/RequirementCollectionIterator.phpj(4 ejܭ: phar-io-manifest/values/Type.php(4 e=%phar-io-manifest/values/Url.php(4 e͚&phar-io-manifest/xml/AuthorElement.phpr(4 er<0phar-io-manifest/xml/AuthorElementCollection.php,(4 e,-'phar-io-manifest/xml/BundlesElement.phpS(4 eSWN>)phar-io-manifest/xml/ComponentElement.phpy(4 eyݤ3phar-io-manifest/xml/ComponentElementCollection.php5(4 e5(\(phar-io-manifest/xml/ContainsElement.phpn(4 enf)phar-io-manifest/xml/CopyrightElement.php(4 e7*phar-io-manifest/xml/ElementCollection.php(4 e@ #phar-io-manifest/xml/ExtElement.php (4 e y>-phar-io-manifest/xml/ExtElementCollection.php#(4 e#E)phar-io-manifest/xml/ExtensionElement.php}(4 e}0'phar-io-manifest/xml/LicenseElement.phpo(4 eo%:')phar-io-manifest/xml/ManifestDocument.php + (4 e + 4(phar-io-manifest/xml/ManifestElement.php4(4 e4#phar-io-manifest/xml/PhpElement.php(4 eB:5(phar-io-manifest/xml/RequiresElement.php$(4 e$>!phar-io-version/BuildMetaData.php(4 ephar-io-version/LICENSE&(4 e&Ҫ $phar-io-version/PreReleaseSuffix.php(4 e:phar-io-version/Version.php(4 eu#+phar-io-version/VersionConstraintParser.phpT (4 eT Ф*phar-io-version/VersionConstraintValue.phpH +(4 eH +F{~4!phar-io-version/VersionNumber.php(4 eO19phar-io-version/constraints/AbstractVersionConstraint.php(4 exB9phar-io-version/constraints/AndVersionConstraintGroup.php(4 eY4phar-io-version/constraints/AnyVersionConstraint.phpR(4 eR #6phar-io-version/constraints/ExactVersionConstraint.php(4 e!Ephar-io-version/constraints/GreaterThanOrEqualToVersionConstraint.php(4 eVU8phar-io-version/constraints/OrVersionConstraintGroup.php(4 eM%Fphar-io-version/constraints/SpecificMajorAndMinorVersionConstraint.php(4 eɍ>phar-io-version/constraints/SpecificMajorVersionConstraint.php(4 e`9q:1phar-io-version/constraints/VersionConstraint.php(4 eeDq(phar-io-version/exceptions/Exception.php(4 e$eb?phar-io-version/exceptions/InvalidPreReleaseSuffixException.php(4 eҵ6phar-io-version/exceptions/InvalidVersionException.php(4 e4/S7phar-io-version/exceptions/NoBuildMetaDataException.php(4 e]:phar-io-version/exceptions/NoPreReleaseSuffixException.php(4 eT4Dphar-io-version/exceptions/UnsupportedVersionConstraintException.php(4 e9"php-code-coverage/CodeCoverage.phpNE(4 eNE3M%#php-code-coverage/Driver/Driver.php(4 e3A'php-code-coverage/Driver/PcovDriver.phpJ(4 eJ)php-code-coverage/Driver/PhpdbgDriver.php^ +(4 e^ +_2G%php-code-coverage/Driver/Selector.php (4 e 6]*php-code-coverage/Driver/Xdebug2Driver.phpA (4 eA *php-code-coverage/Driver/Xdebug3Driver.php (4 e h*Jphp-code-coverage/Exception/BranchAndPathCoverageNotSupportedException.php(4 e77Fphp-code-coverage/Exception/DeadCodeDetectionNotSupportedException.php(4 eCphp-code-coverage/Exception/DirectoryCouldNotBeCreatedException.php(4 e)php-code-coverage/Exception/Exception.php}(4 e}z8php-code-coverage/Exception/InvalidArgumentException.php(4 eK.nFphp-code-coverage/Exception/NoCodeCoverageDriverAvailableException.php/(4 e/6R]php-code-coverage/Exception/NoCodeCoverageDriverWithPathCoverageSupportAvailableException.phpa(4 ea"A/php-code-coverage/Exception/ParserException.php(4 e,/Dphp-code-coverage/Exception/PathExistsButIsNotDirectoryException.php(4 e.29php-code-coverage/Exception/PcovNotAvailableException.phpa(4 eaj;php-code-coverage/Exception/PhpdbgNotAvailableException.php`(4 e`3php-code-coverage/Exception/ReflectionException.php(4 ek)?php-code-coverage/Exception/ReportAlreadyFinalizedException.php:(4 e:d%6Iphp-code-coverage/Exception/StaticAnalysisCacheNotConfiguredException.php(4 e}6php-code-coverage/Exception/TestIdMissingException.php(4 e +Cphp-code-coverage/Exception/UnintentionallyCoveredCodeException.php+(4 e+Q_ª=php-code-coverage/Exception/WriteOperationFailedException.php(4 e(e;php-code-coverage/Exception/WrongXdebugVersionException.php(4 e Ȥ:php-code-coverage/Exception/Xdebug2NotEnabledException.phpf(4 ef,':php-code-coverage/Exception/Xdebug3NotEnabledException.phpy(4 ey<>;php-code-coverage/Exception/XdebugNotAvailableException.phpe(4 eeNG,php-code-coverage/Exception/XmlException.php(4 eWܤphp-code-coverage/Filter.php (4 e 4php-code-coverage/LICENSE(4 e-~y֤'php-code-coverage/Node/AbstractNode.php:(4 e:%^"php-code-coverage/Node/Builder.php (4 e 2N$php-code-coverage/Node/CrapIndex.php(4 e# $php-code-coverage/Node/Directory.php +&(4 e +&}php-code-coverage/Node/File.phpK(4 eK{#php-code-coverage/Node/Iterator.php(4 eHk/php-code-coverage/ProcessedCodeCoverageData.php$(4 e$')php-code-coverage/RawCodeCoverageData.php!(4 e!#php-code-coverage/Report/Clover.phpW((4 eW(yD&php-code-coverage/Report/Cobertura.php1(4 e1 Z#php-code-coverage/Report/Crap4j.php<(4 e<r(php-code-coverage/Report/Html/Facade.php"(4 e";ڤ*php-code-coverage/Report/Html/Renderer.phpU!(4 eU!}4php-code-coverage/Report/Html/Renderer/Dashboard.phpC (4 eC L+4php-code-coverage/Report/Html/Renderer/Directory.php (4 e (/php-code-coverage/Report/Html/Renderer/File.php (4 e ZuBphp-code-coverage/Report/Html/Renderer/Template/branches.html.dist(4 eh2+Fphp-code-coverage/Report/Html/Renderer/Template/coverage_bar.html.dist'(4 e'O}Mphp-code-coverage/Report/Html/Renderer/Template/coverage_bar_branch.html.dist'(4 e'O}Ephp-code-coverage/Report/Html/Renderer/Template/css/bootstrap.min.cssy(4 eyĤ>php-code-coverage/Report/Html/Renderer/Template/css/custom.css(4 eAphp-code-coverage/Report/Html/Renderer/Template/css/nv.d3.min.cssX%(4 eX%0,@php-code-coverage/Report/Html/Renderer/Template/css/octicons.cssX(4 eX'#=php-code-coverage/Report/Html/Renderer/Template/css/style.css +(4 e +Cphp-code-coverage/Report/Html/Renderer/Template/dashboard.html.dist(4 eDJphp-code-coverage/Report/Html/Renderer/Template/dashboard_branch.html.dist(4 eDCphp-code-coverage/Report/Html/Renderer/Template/directory.html.dist(4 eՆJphp-code-coverage/Report/Html/Renderer/Template/directory_branch.html.dist(4 en2]Hphp-code-coverage/Report/Html/Renderer/Template/directory_item.html.distA(4 eAdsOphp-code-coverage/Report/Html/Renderer/Template/directory_item_branch.html.dist;(4 e;mۤ>php-code-coverage/Report/Html/Renderer/Template/file.html.distP (4 eP j*Ephp-code-coverage/Report/Html/Renderer/Template/file_branch.html.dist (4 e ㉞Cphp-code-coverage/Report/Html/Renderer/Template/file_item.html.distr(4 er/yJphp-code-coverage/Report/Html/Renderer/Template/file_item_branch.html.distl(4 el-Cphp-code-coverage/Report/Html/Renderer/Template/icons/file-code.svg0(4 e0QUUHphp-code-coverage/Report/Html/Renderer/Template/icons/file-directory.svg(4 eZCphp-code-coverage/Report/Html/Renderer/Template/js/bootstrap.min.jsc(4 ec"#<php-code-coverage/Report/Html/Renderer/Template/js/d3.min.jsP(4 ePhb:php-code-coverage/Report/Html/Renderer/Template/js/file.js(4 eb䆤@php-code-coverage/Report/Html/Renderer/Template/js/jquery.min.js@^(4 e@^ ?php-code-coverage/Report/Html/Renderer/Template/js/nv.d3.min.jsR(4 eRphp-code-coverage/Report/Html/Renderer/Template/line.html.dist(4 e{?php-code-coverage/Report/Html/Renderer/Template/lines.html.diste(4 eedf Ephp-code-coverage/Report/Html/Renderer/Template/method_item.html.dist(4 ejפLphp-code-coverage/Report/Html/Renderer/Template/method_item_branch.html.dist(4 eyĎk?php-code-coverage/Report/Html/Renderer/Template/paths.html.dist(4 e*'ݤ php-code-coverage/Report/PHP.php(4 e<[!php-code-coverage/Report/Text.php'(4 e' 6H1php-code-coverage/Report/Xml/BuildInformation.php (4 e T3e)php-code-coverage/Report/Xml/Coverage.php+(4 e+9E*php-code-coverage/Report/Xml/Directory.php(4 eAf'php-code-coverage/Report/Xml/Facade.php"(4 e"O}%php-code-coverage/Report/Xml/File.php+(4 e+g׃'php-code-coverage/Report/Xml/Method.phpW(4 eW ʤ%php-code-coverage/Report/Xml/Node.php3(4 e3(php-code-coverage/Report/Xml/Project.phpf(4 efPe'php-code-coverage/Report/Xml/Report.php (4 e HC'php-code-coverage/Report/Xml/Source.phpz(4 ez'1&php-code-coverage/Report/Xml/Tests.php(4 e'php-code-coverage/Report/Xml/Totals.php(4 e:6%php-code-coverage/Report/Xml/Unit.php(4 eY0php-code-coverage/StaticAnalysis/CacheWarmer.php`(4 e`_%פ8php-code-coverage/StaticAnalysis/CachingFileAnalyser.php(4 e2Q;php-code-coverage/StaticAnalysis/CodeUnitFindingVisitor.php,((4 e,(vMBphp-code-coverage/StaticAnalysis/ExecutableLinesFindingVisitor.phpm'(4 em'i1php-code-coverage/StaticAnalysis/FileAnalyser.php(4 eJ?php-code-coverage/StaticAnalysis/IgnoredLinesFindingVisitor.php (4 e 8php-code-coverage/StaticAnalysis/ParsingFileAnalyser.php(4 ed%php-code-coverage/Util/Filesystem.php(4 e%php-code-coverage/Util/Percentage.php(4 ephp-code-coverage/Version.php(4 eR郤php-file-iterator/Facade.php% +(4 e% +Τphp-file-iterator/Factory.php(4 eg ,php-file-iterator/Iterator.phpZ (4 eZ C܎php-file-iterator/LICENSE(4 eo:php-invoker/Invoker.php(4 e+L$php-invoker/exceptions/Exception.phpr(4 ervvduDphp-invoker/exceptions/ProcessControlExtensionNotLoadedException.php(4 e +php-invoker/exceptions/TimeoutException.php(4 e.php-text-template/LICENSE(4 euphp-text-template/Template.php( (4 e( *php-text-template/exceptions/Exception.phpy(4 eyn9php-text-template/exceptions/InvalidArgumentException.php(4 eaM1php-text-template/exceptions/RuntimeException.php(4 eYm'php-timer/Duration.php +(4 e +tXyphp-timer/LICENSE(4 ex$php-timer/ResourceUsageFormatter.php(4 ePھphp-timer/Timer.php(4 ecAɤ"php-timer/exceptions/Exception.phpn(4 eniuۤ/php-timer/exceptions/NoActiveTimerException.php(4 el٤Ephp-timer/exceptions/TimeSinceStartOfRequestNotAvailableException.php(4 e$b+phpdocumentor-reflection-common/Element.php (4 e %(phpdocumentor-reflection-common/File.php(4 eI))phpdocumentor-reflection-common/Fqsen.php(4 e?'phpdocumentor-reflection-common/LICENSE9(4 e9*2Ȑ,phpdocumentor-reflection-common/Location.php(4 e=(+phpdocumentor-reflection-common/Project.php(4 eJ2phpdocumentor-reflection-common/ProjectFactory.php_(4 e_j\".phpdocumentor-reflection-docblock/DocBlock.php(4 eHx>$:phpdocumentor-reflection-docblock/DocBlock/Description.php (4 e 54Aphpdocumentor-reflection-docblock/DocBlock/DescriptionFactory.php(4 ed=<phpdocumentor-reflection-docblock/DocBlock/ExampleFinder.php,(4 e,ׯf9phpdocumentor-reflection-docblock/DocBlock/Serializer.php (4 e ]Aphpdocumentor-reflection-docblock/DocBlock/StandardTagFactory.php0(4 e0<2phpdocumentor-reflection-docblock/DocBlock/Tag.php(4 e9phpdocumentor-reflection-docblock/DocBlock/TagFactory.php(4 eJMx:phpdocumentor-reflection-docblock/DocBlock/Tags/Author.php (4 e ;phpdocumentor-reflection-docblock/DocBlock/Tags/BaseTag.php(4 eZr:phpdocumentor-reflection-docblock/DocBlock/Tags/Covers.phpg +(4 eg w8>phpdocumentor-reflection-docblock/DocBlock/Tags/Deprecated.php -ec -}CO;phpdocumentor-reflection-docblock/DocBlock/Tags/Example.phpecalN@Hphpdocumentor-reflection-docblock/DocBlock/Tags/Factory/StaticMethod.phpec.ͤ=phpdocumentor-reflection-docblock/DocBlock/Tags/Formatter.phpec}BܤLphpdocumentor-reflection-docblock/DocBlock/Tags/Formatter/AlignFormatter.phpqecqRphpdocumentor-reflection-docblock/DocBlock/Tags/Formatter/PassthroughFormatter.phpecP~;phpdocumentor-reflection-docblock/DocBlock/Tags/Generic.phpx ecx Bn>phpdocumentor-reflection-docblock/DocBlock/Tags/InvalidTag.php,ec,Md88phpdocumentor-reflection-docblock/DocBlock/Tags/Link.phpecG:phpdocumentor-reflection-docblock/DocBlock/Tags/Method.phpecYKc9phpdocumentor-reflection-docblock/DocBlock/Tags/Param.phpecB<phpdocumentor-reflection-docblock/DocBlock/Tags/Property.php ec |yCϤ@phpdocumentor-reflection-docblock/DocBlock/Tags/PropertyRead.php ec #k:Aphpdocumentor-reflection-docblock/DocBlock/Tags/PropertyWrite.php ec v Cphpdocumentor-reflection-docblock/DocBlock/Tags/Reference/Fqsen.php,ec,%8Gphpdocumentor-reflection-docblock/DocBlock/Tags/Reference/Reference.phpec Aphpdocumentor-reflection-docblock/DocBlock/Tags/Reference/Url.phpecc[];phpdocumentor-reflection-docblock/DocBlock/Tags/Return_.phpec N7phpdocumentor-reflection-docblock/DocBlock/Tags/See.php ec :e9phpdocumentor-reflection-docblock/DocBlock/Tags/Since.phpW -ecW -1>:phpdocumentor-reflection-docblock/DocBlock/Tags/Source.php ec [K?phpdocumentor-reflection-docblock/DocBlock/Tags/TagWithType.phpec;u:phpdocumentor-reflection-docblock/DocBlock/Tags/Throws.phpec"G8phpdocumentor-reflection-docblock/DocBlock/Tags/Uses.php> -ec> +(4 e +}CO;phpdocumentor-reflection-docblock/DocBlock/Tags/Example.php(4 ealN@Hphpdocumentor-reflection-docblock/DocBlock/Tags/Factory/StaticMethod.php(4 e.ͤ=phpdocumentor-reflection-docblock/DocBlock/Tags/Formatter.php(4 e}BܤLphpdocumentor-reflection-docblock/DocBlock/Tags/Formatter/AlignFormatter.phpq(4 eqRphpdocumentor-reflection-docblock/DocBlock/Tags/Formatter/PassthroughFormatter.php(4 eP~;phpdocumentor-reflection-docblock/DocBlock/Tags/Generic.phpx (4 ex Bn>phpdocumentor-reflection-docblock/DocBlock/Tags/InvalidTag.php,(4 e,Md88phpdocumentor-reflection-docblock/DocBlock/Tags/Link.php(4 eG:phpdocumentor-reflection-docblock/DocBlock/Tags/Method.php(4 eYKc9phpdocumentor-reflection-docblock/DocBlock/Tags/Param.php(4 eB<phpdocumentor-reflection-docblock/DocBlock/Tags/Property.php (4 e |yCϤ@phpdocumentor-reflection-docblock/DocBlock/Tags/PropertyRead.php (4 e #k:Aphpdocumentor-reflection-docblock/DocBlock/Tags/PropertyWrite.php (4 e v Cphpdocumentor-reflection-docblock/DocBlock/Tags/Reference/Fqsen.php,(4 e,%8Gphpdocumentor-reflection-docblock/DocBlock/Tags/Reference/Reference.php(4 e Aphpdocumentor-reflection-docblock/DocBlock/Tags/Reference/Url.php(4 ec[];phpdocumentor-reflection-docblock/DocBlock/Tags/Return_.php(4 e N7phpdocumentor-reflection-docblock/DocBlock/Tags/See.php (4 e :e9phpdocumentor-reflection-docblock/DocBlock/Tags/Since.phpW +(4 eW +1>:phpdocumentor-reflection-docblock/DocBlock/Tags/Source.php (4 e [K?phpdocumentor-reflection-docblock/DocBlock/Tags/TagWithType.php(4 e;u:phpdocumentor-reflection-docblock/DocBlock/Tags/Throws.php(4 e"G8phpdocumentor-reflection-docblock/DocBlock/Tags/Uses.php> +(4 e>  -8phpdocumentor-reflection-docblock/DocBlock/Tags/Var_.php ec u:ڤ;phpdocumentor-reflection-docblock/DocBlock/Tags/Version.php -ec -@S5phpdocumentor-reflection-docblock/DocBlockFactory.php$ec$br>phpdocumentor-reflection-docblock/DocBlockFactoryInterface.phpec)%ߤ=phpdocumentor-reflection-docblock/Exception/PcreException.phpec V)phpdocumentor-reflection-docblock/LICENSE8ec8ʤ+phpdocumentor-reflection-docblock/Utils.php ec -phpdocumentor-type-resolver/FqsenResolver.phpecj^#phpdocumentor-type-resolver/LICENSE8ec8ʤ*phpdocumentor-type-resolver/PseudoType.phpuecu]\:phpdocumentor-type-resolver/PseudoTypes/CallableString.php`ec`Z2phpdocumentor-type-resolver/PseudoTypes/False_.phpeco䈤=phpdocumentor-type-resolver/PseudoTypes/HtmlEscapedString.phpgecgwe8phpdocumentor-type-resolver/PseudoTypes/IntegerRange.php%ec%R1phpdocumentor-type-resolver/PseudoTypes/List_.phpecwu9phpdocumentor-type-resolver/PseudoTypes/LiteralString.php^ec^=oNW;phpdocumentor-type-resolver/PseudoTypes/LowercaseString.phpbecb7 ;phpdocumentor-type-resolver/PseudoTypes/NegativeInteger.php[ec[DEۤCphpdocumentor-type-resolver/PseudoTypes/NonEmptyLowercaseString.phptect):phpdocumentor-type-resolver/PseudoTypes/NonEmptyString.phpaeca²,9phpdocumentor-type-resolver/PseudoTypes/NumericString.php^ec^8M4phpdocumentor-type-resolver/PseudoTypes/Numeric_.phpec=k;phpdocumentor-type-resolver/PseudoTypes/PositiveInteger.php[ec[H7phpdocumentor-type-resolver/PseudoTypes/TraitString.phpZecZgC1phpdocumentor-type-resolver/PseudoTypes/True_.phpecl$phpdocumentor-type-resolver/Type.phpecb&,phpdocumentor-type-resolver/TypeResolver.php%Uec%UU2phpdocumentor-type-resolver/Types/AbstractList.phptectt4phpdocumentor-type-resolver/Types/AggregatedType.php -ec -Hɵ.phpdocumentor-type-resolver/Types/ArrayKey.phpecPĤ,phpdocumentor-type-resolver/Types/Array_.phpec4-phpdocumentor-type-resolver/Types/Boolean.phpnecnrĤ/phpdocumentor-type-resolver/Types/Callable_.php{ec{E1phpdocumentor-type-resolver/Types/ClassString.phpCecCrvy0phpdocumentor-type-resolver/Types/Collection.phpec?.phpdocumentor-type-resolver/Types/Compound.phpec>7-phpdocumentor-type-resolver/Types/Context.php ec ]Z4phpdocumentor-type-resolver/Types/ContextFactory.php6ec6\0phpdocumentor-type-resolver/Types/Expression.php8ec8g,phpdocumentor-type-resolver/Types/Float_.phpmecm)J-phpdocumentor-type-resolver/Types/Integer.phpjecjv5phpdocumentor-type-resolver/Types/InterfaceString.phpec2phpdocumentor-type-resolver/Types/Intersection.phpecUz$/phpdocumentor-type-resolver/Types/Iterable_.php?ec?Q8,phpdocumentor-type-resolver/Types/Mixed_.phpec3i,phpdocumentor-type-resolver/Types/Never_.phpecj+phpdocumentor-type-resolver/Types/Null_.phpxecxs.phpdocumentor-type-resolver/Types/Nullable.phpRecRCp\-phpdocumentor-type-resolver/Types/Object_.phpecwEhN-phpdocumentor-type-resolver/Types/Parent_.phpecO!./phpdocumentor-type-resolver/Types/Resource_.phpecŞX,phpdocumentor-type-resolver/Types/Scalar.phpec+phpdocumentor-type-resolver/Types/Self_.phpecoȤ-phpdocumentor-type-resolver/Types/Static_.phpec8-phpdocumentor-type-resolver/Types/String_.phpsecsH*phpdocumentor-type-resolver/Types/This.phpYecY^?ֈ+phpdocumentor-type-resolver/Types/Void_.phpeckphpspec-prophecy/LICENSE}ec} ߦ&phpspec-prophecy/Prophecy/Argument.phpecn8phpspec-prophecy/Prophecy/Argument/ArgumentsWildcard.phpY ecY 0?:phpspec-prophecy/Prophecy/Argument/Token/AnyValueToken.phpec{ܤ;phpspec-prophecy/Prophecy/Argument/Token/AnyValuesToken.phpec'`Bphpspec-prophecy/Prophecy/Argument/Token/ApproximateValueToken.phpec <phpspec-prophecy/Prophecy/Argument/Token/ArrayCountToken.phpec/*2<phpspec-prophecy/Prophecy/Argument/Token/ArrayEntryToken.phpecAphpspec-prophecy/Prophecy/Argument/Token/ArrayEveryEntryToken.phpec#:phpspec-prophecy/Prophecy/Argument/Token/CallbackToken.phpecv<phpspec-prophecy/Prophecy/Argument/Token/ExactValueToken.php ec j\@phpspec-prophecy/Prophecy/Argument/Token/IdenticalValueToken.phpecu`S9phpspec-prophecy/Prophecy/Argument/Token/InArrayToken.phpec?xn<phpspec-prophecy/Prophecy/Argument/Token/LogicalAndToken.phpDecD(bL<phpspec-prophecy/Prophecy/Argument/Token/LogicalNotToken.phpXecX5)<phpspec-prophecy/Prophecy/Argument/Token/NotInArrayToken.phpec;=phpspec-prophecy/Prophecy/Argument/Token/ObjectStateToken.php ec T@phpspec-prophecy/Prophecy/Argument/Token/StringContainsToken.php-ec-3xD;phpspec-prophecy/Prophecy/Argument/Token/TokenInterface.phpec(nGw6phpspec-prophecy/Prophecy/Argument/Token/TypeToken.phpec$'phpspec-prophecy/Prophecy/Call/Call.phpc ecc ڟJ-phpspec-prophecy/Prophecy/Call/CallCenter.phpecɝ.:phpspec-prophecy/Prophecy/Comparator/ClosureComparator.phpec40phpspec-prophecy/Prophecy/Comparator/Factory.phpec8! -Ԥ;phpspec-prophecy/Prophecy/Comparator/ProphecyComparator.phpec^^3phpspec-prophecy/Prophecy/Doubler/CachedDoubler.phpecOd\Dphpspec-prophecy/Prophecy/Doubler/ClassPatch/ClassPatchInterface.phphechq!ʤHphpspec-prophecy/Prophecy/Doubler/ClassPatch/DisableConstructorPatch.phpec=phpspec-prophecy/Prophecy/Doubler/ClassPatch/KeywordPatch.php ec ?phpspec-prophecy/Prophecy/Doubler/ClassPatch/MagicCallPatch.php ec Q)7Ephpspec-prophecy/Prophecy/Doubler/ClassPatch/ProphecySubjectPatch.php ec /Pphpspec-prophecy/Prophecy/Doubler/ClassPatch/ReflectionClassNewInstancePatch.phpecۤAphpspec-prophecy/Prophecy/Doubler/ClassPatch/SplFileInfoPatch.phpi eci [ꢤ?phpspec-prophecy/Prophecy/Doubler/ClassPatch/ThrowablePatch.php ec 83Aphpspec-prophecy/Prophecy/Doubler/ClassPatch/TraversablePatch.php ec wp5phpspec-prophecy/Prophecy/Doubler/DoubleInterface.phpecBۤ-phpspec-prophecy/Prophecy/Doubler/Doubler.php5ec55Bphpspec-prophecy/Prophecy/Doubler/Generator/ClassCodeGenerator.php ec <phpspec-prophecy/Prophecy/Doubler/Generator/ClassCreator.phpec扴;phpspec-prophecy/Prophecy/Doubler/Generator/ClassMirror.php ec sAphpspec-prophecy/Prophecy/Doubler/Generator/Node/ArgumentNode.phpz ecz CiEphpspec-prophecy/Prophecy/Doubler/Generator/Node/ArgumentTypeNode.phpecˤ>phpspec-prophecy/Prophecy/Doubler/Generator/Node/ClassNode.phpec4?phpspec-prophecy/Prophecy/Doubler/Generator/Node/MethodNode.phpoeco}-Cphpspec-prophecy/Prophecy/Doubler/Generator/Node/ReturnTypeNode.phpec,X;Ephpspec-prophecy/Prophecy/Doubler/Generator/Node/TypeNodeAbstract.phpz ecz a Cphpspec-prophecy/Prophecy/Doubler/Generator/ReflectionInterface.phpec YAphpspec-prophecy/Prophecy/Doubler/Generator/TypeHintReference.phpeci0phpspec-prophecy/Prophecy/Doubler/LazyDouble.php ec 3phpspec-prophecy/Prophecy/Doubler/NameGenerator.phpecdDphpspec-prophecy/Prophecy/Exception/Call/UnexpectedCallException.phpec}Ephpspec-prophecy/Prophecy/Exception/Doubler/ClassCreatorException.phpecrDphpspec-prophecy/Prophecy/Exception/Doubler/ClassMirrorException.phpecbFphpspec-prophecy/Prophecy/Exception/Doubler/ClassNotFoundException.phpec>?phpspec-prophecy/Prophecy/Exception/Doubler/DoubleException.phpecV"^@phpspec-prophecy/Prophecy/Exception/Doubler/DoublerException.phpechJphpspec-prophecy/Prophecy/Exception/Doubler/InterfaceNotFoundException.phpec&qLphpspec-prophecy/Prophecy/Exception/Doubler/MethodNotExtendableException.phpec[Gphpspec-prophecy/Prophecy/Exception/Doubler/MethodNotFoundException.phpece:Jphpspec-prophecy/Prophecy/Exception/Doubler/ReturnByReferenceException.phpec0+5,1phpspec-prophecy/Prophecy/Exception/Exception.phpecx@phpspec-prophecy/Prophecy/Exception/InvalidArgumentException.phpec󱙤Ephpspec-prophecy/Prophecy/Exception/Prediction/AggregateException.php8ec8 .ڤLphpspec-prophecy/Prophecy/Exception/Prediction/FailedPredictionException.phpgecg3'}}Cphpspec-prophecy/Prophecy/Exception/Prediction/NoCallsException.phpecZFphpspec-prophecy/Prophecy/Exception/Prediction/PredictionException.phpecR2ͤPphpspec-prophecy/Prophecy/Exception/Prediction/UnexpectedCallsCountException.php#ec#ߤKphpspec-prophecy/Prophecy/Exception/Prediction/UnexpectedCallsException.phpFecF|bHphpspec-prophecy/Prophecy/Exception/Prophecy/MethodProphecyException.phpAecAcHphpspec-prophecy/Prophecy/Exception/Prophecy/ObjectProphecyException.php2ec2eBphpspec-prophecy/Prophecy/Exception/Prophecy/ProphecyException.phpecD7jIphpspec-prophecy/Prophecy/PhpDocumentor/ClassAndInterfaceTagRetriever.phpecƤ=phpspec-prophecy/Prophecy/PhpDocumentor/ClassTagRetriever.phpec@%Cphpspec-prophecy/Prophecy/PhpDocumentor/LegacyClassTagRetriever.phpec|6Gphpspec-prophecy/Prophecy/PhpDocumentor/MethodTagRetrieverInterface.phpec17phpspec-prophecy/Prophecy/Prediction/CallPrediction.phpZecZ%U<phpspec-prophecy/Prophecy/Prediction/CallTimesPrediction.php -ec -#c;phpspec-prophecy/Prophecy/Prediction/CallbackPrediction.phpec~*:phpspec-prophecy/Prophecy/Prediction/NoCallsPrediction.phpecܼ<phpspec-prophecy/Prophecy/Prediction/PredictionInterface.phpecv5phpspec-prophecy/Prophecy/Promise/CallbackPromise.phpecԌӤ6phpspec-prophecy/Prophecy/Promise/PromiseInterface.phpIecIyv;phpspec-prophecy/Prophecy/Promise/ReturnArgumentPromise.php -ec -,s3phpspec-prophecy/Prophecy/Promise/ReturnPromise.php%ec%&2phpspec-prophecy/Prophecy/Promise/ThrowPromise.php% ec% Q35phpspec-prophecy/Prophecy/Prophecy/MethodProphecy.php29ec29S5phpspec-prophecy/Prophecy/Prophecy/ObjectProphecy.phpec#=8phpspec-prophecy/Prophecy/Prophecy/ProphecyInterface.php+ec+X?phpspec-prophecy/Prophecy/Prophecy/ProphecySubjectInterface.phpec</phpspec-prophecy/Prophecy/Prophecy/Revealer.phpec m8phpspec-prophecy/Prophecy/Prophecy/RevealerInterface.phpGecGWnZ%phpspec-prophecy/Prophecy/Prophet.phpec-phpspec-prophecy/Prophecy/Util/ExportUtil.phpecbZ-phpspec-prophecy/Prophecy/Util/StringUtil.php -ec -{a phpunit.xsdDFecDFs|phpunit/Exception.phpeca#phpunit/Framework/Assert.phpRecR6뒤&phpunit/Framework/Assert/Functions.phpec lO0phpunit/Framework/Constraint/Boolean/IsFalse.phpec/phpunit/Framework/Constraint/Boolean/IsTrue.phpec})phpunit/Framework/Constraint/Callback.php?ec? -b2phpunit/Framework/Constraint/Cardinality/Count.phpj ecj xR@ؤ8phpunit/Framework/Constraint/Cardinality/GreaterThan.phpech,d}4phpunit/Framework/Constraint/Cardinality/IsEmpty.phpechf5phpunit/Framework/Constraint/Cardinality/LessThan.phpeca T5phpunit/Framework/Constraint/Cardinality/SameSize.php_ec_uŤ+phpunit/Framework/Constraint/Constraint.phpk"eck"@ƍ1phpunit/Framework/Constraint/Equality/IsEqual.php ec Ӥ?phpunit/Framework/Constraint/Equality/IsEqualCanonicalizing.php -ec +8phpdocumentor-reflection-docblock/DocBlock/Tags/Var_.php (4 e u:ڤ;phpdocumentor-reflection-docblock/DocBlock/Tags/Version.php +(4 e +@S5phpdocumentor-reflection-docblock/DocBlockFactory.php$(4 e$br>phpdocumentor-reflection-docblock/DocBlockFactoryInterface.php(4 e)%ߤ=phpdocumentor-reflection-docblock/Exception/PcreException.php(4 e V)phpdocumentor-reflection-docblock/LICENSE8(4 e8ʤ+phpdocumentor-reflection-docblock/Utils.php (4 e -phpdocumentor-type-resolver/FqsenResolver.php(4 ej^#phpdocumentor-type-resolver/LICENSE8(4 e8ʤ*phpdocumentor-type-resolver/PseudoType.phpu(4 eu]\:phpdocumentor-type-resolver/PseudoTypes/CallableString.php`(4 e`Z2phpdocumentor-type-resolver/PseudoTypes/False_.php(4 eo䈤=phpdocumentor-type-resolver/PseudoTypes/HtmlEscapedString.phpg(4 egwe8phpdocumentor-type-resolver/PseudoTypes/IntegerRange.php%(4 e%R1phpdocumentor-type-resolver/PseudoTypes/List_.php(4 ewu9phpdocumentor-type-resolver/PseudoTypes/LiteralString.php^(4 e^=oNW;phpdocumentor-type-resolver/PseudoTypes/LowercaseString.phpb(4 eb7 ;phpdocumentor-type-resolver/PseudoTypes/NegativeInteger.php[(4 e[DEۤCphpdocumentor-type-resolver/PseudoTypes/NonEmptyLowercaseString.phpt(4 et):phpdocumentor-type-resolver/PseudoTypes/NonEmptyString.phpa(4 ea²,9phpdocumentor-type-resolver/PseudoTypes/NumericString.php^(4 e^8M4phpdocumentor-type-resolver/PseudoTypes/Numeric_.php(4 e=k;phpdocumentor-type-resolver/PseudoTypes/PositiveInteger.php[(4 e[H7phpdocumentor-type-resolver/PseudoTypes/TraitString.phpZ(4 eZgC1phpdocumentor-type-resolver/PseudoTypes/True_.php(4 el$phpdocumentor-type-resolver/Type.php(4 eb&,phpdocumentor-type-resolver/TypeResolver.php%U(4 e%UU2phpdocumentor-type-resolver/Types/AbstractList.phpt(4 ett4phpdocumentor-type-resolver/Types/AggregatedType.php +(4 e +Hɵ.phpdocumentor-type-resolver/Types/ArrayKey.php(4 ePĤ,phpdocumentor-type-resolver/Types/Array_.php(4 e4-phpdocumentor-type-resolver/Types/Boolean.phpn(4 enrĤ/phpdocumentor-type-resolver/Types/Callable_.php{(4 e{E1phpdocumentor-type-resolver/Types/ClassString.phpC(4 eCrvy0phpdocumentor-type-resolver/Types/Collection.php(4 e?.phpdocumentor-type-resolver/Types/Compound.php(4 e>7-phpdocumentor-type-resolver/Types/Context.php (4 e ]Z4phpdocumentor-type-resolver/Types/ContextFactory.php6(4 e6\0phpdocumentor-type-resolver/Types/Expression.php8(4 e8g,phpdocumentor-type-resolver/Types/Float_.phpm(4 em)J-phpdocumentor-type-resolver/Types/Integer.phpj(4 ejv5phpdocumentor-type-resolver/Types/InterfaceString.php(4 e2phpdocumentor-type-resolver/Types/Intersection.php(4 eUz$/phpdocumentor-type-resolver/Types/Iterable_.php?(4 e?Q8,phpdocumentor-type-resolver/Types/Mixed_.php(4 e3i,phpdocumentor-type-resolver/Types/Never_.php(4 ej+phpdocumentor-type-resolver/Types/Null_.phpx(4 exs.phpdocumentor-type-resolver/Types/Nullable.phpR(4 eRCp\-phpdocumentor-type-resolver/Types/Object_.php(4 ewEhN-phpdocumentor-type-resolver/Types/Parent_.php(4 eO!./phpdocumentor-type-resolver/Types/Resource_.php(4 eŞX,phpdocumentor-type-resolver/Types/Scalar.php(4 e+phpdocumentor-type-resolver/Types/Self_.php(4 eoȤ-phpdocumentor-type-resolver/Types/Static_.php(4 e8-phpdocumentor-type-resolver/Types/String_.phps(4 esH*phpdocumentor-type-resolver/Types/This.phpY(4 eY^?ֈ+phpdocumentor-type-resolver/Types/Void_.php(4 ekphpspec-prophecy/LICENSE}(4 e} ߦ&phpspec-prophecy/Prophecy/Argument.php](4 e]eQ8phpspec-prophecy/Prophecy/Argument/ArgumentsWildcard.php (4 e N<:phpspec-prophecy/Prophecy/Argument/Token/AnyValueToken.php(4 eIZ%%;phpspec-prophecy/Prophecy/Argument/Token/AnyValuesToken.php(4 e'`Bphpspec-prophecy/Prophecy/Argument/Token/ApproximateValueToken.phpm(4 em٬c<phpspec-prophecy/Prophecy/Argument/Token/ArrayCountToken.phpQ(4 eQ_穤<phpspec-prophecy/Prophecy/Argument/Token/ArrayEntryToken.php(4 eRAphpspec-prophecy/Prophecy/Argument/Token/ArrayEveryEntryToken.php(4 e#:phpspec-prophecy/Prophecy/Argument/Token/CallbackToken.php(4 ef"<phpspec-prophecy/Prophecy/Argument/Token/ExactValueToken.php (4 e :٤@phpspec-prophecy/Prophecy/Argument/Token/IdenticalValueToken.php(4 e49phpspec-prophecy/Prophecy/Argument/Token/InArrayToken.php(4 eͪ!<phpspec-prophecy/Prophecy/Argument/Token/LogicalAndToken.php(4 e<phpspec-prophecy/Prophecy/Argument/Token/LogicalNotToken.phpA(4 eA<phpspec-prophecy/Prophecy/Argument/Token/NotInArrayToken.php(4 e=phpspec-prophecy/Prophecy/Argument/Token/ObjectStateToken.php +(4 e +#"lV@phpspec-prophecy/Prophecy/Argument/Token/StringContainsToken.php-(4 e-3xD;phpspec-prophecy/Prophecy/Argument/Token/TokenInterface.php(4 eG66phpspec-prophecy/Prophecy/Argument/Token/TypeToken.php(4 e$'phpspec-prophecy/Prophecy/Call/Call.php(4 e΂-phpspec-prophecy/Prophecy/Call/CallCenter.php(4 e\%-j:phpspec-prophecy/Prophecy/Comparator/ClosureComparator.php(4 eO0phpspec-prophecy/Prophecy/Comparator/Factory.php(4 eU%8phpspec-prophecy/Prophecy/Comparator/FactoryProvider.php(4 ek;phpspec-prophecy/Prophecy/Comparator/ProphecyComparator.php (4 e 3phpspec-prophecy/Prophecy/Doubler/CachedDoubler.php(4 eUWDphpspec-prophecy/Prophecy/Doubler/ClassPatch/ClassPatchInterface.phph(4 ehq!ʤHphpspec-prophecy/Prophecy/Doubler/ClassPatch/DisableConstructorPatch.php(4 e,g=phpspec-prophecy/Prophecy/Doubler/ClassPatch/KeywordPatch.php'(4 e'?phpspec-prophecy/Prophecy/Doubler/ClassPatch/MagicCallPatch.php (4 e Q)7Ephpspec-prophecy/Prophecy/Doubler/ClassPatch/ProphecySubjectPatch.php$ (4 e$ bBۀPphpspec-prophecy/Prophecy/Doubler/ClassPatch/ReflectionClassNewInstancePatch.php(4 e +,Aphpspec-prophecy/Prophecy/Doubler/ClassPatch/SplFileInfoPatch.php@ (4 e@ YyG?phpspec-prophecy/Prophecy/Doubler/ClassPatch/ThrowablePatch.php" (4 e" aԤAphpspec-prophecy/Prophecy/Doubler/ClassPatch/TraversablePatch.php (4 e wp5phpspec-prophecy/Prophecy/Doubler/DoubleInterface.php(4 eBۤ-phpspec-prophecy/Prophecy/Doubler/Doubler.php(4 ePvlBphpspec-prophecy/Prophecy/Doubler/Generator/ClassCodeGenerator.php (4 e Wy<phpspec-prophecy/Prophecy/Doubler/Generator/ClassCreator.phpb(4 ebH1ؤ;phpspec-prophecy/Prophecy/Doubler/Generator/ClassMirror.php#(4 e#Aphpspec-prophecy/Prophecy/Doubler/Generator/Node/ArgumentNode.php(4 eZfEphpspec-prophecy/Prophecy/Doubler/Generator/Node/ArgumentTypeNode.php(4 eˤ>phpspec-prophecy/Prophecy/Doubler/Generator/Node/ClassNode.phpN(4 eN׉ ?phpspec-prophecy/Prophecy/Doubler/Generator/Node/MethodNode.php(4 eCphpspec-prophecy/Prophecy/Doubler/Generator/Node/ReturnTypeNode.php(4 eCٮEphpspec-prophecy/Prophecy/Doubler/Generator/Node/TypeNodeAbstract.php (4 e eCphpspec-prophecy/Prophecy/Doubler/Generator/ReflectionInterface.php(4 e YAphpspec-prophecy/Prophecy/Doubler/Generator/TypeHintReference.php"(4 e"&0phpspec-prophecy/Prophecy/Doubler/LazyDouble.php (4 e 3phpspec-prophecy/Prophecy/Doubler/NameGenerator.php(4 e,ôyDphpspec-prophecy/Prophecy/Exception/Call/UnexpectedCallException.php(4 eOEphpspec-prophecy/Prophecy/Exception/Doubler/ClassCreatorException.phpD(4 eDyXDphpspec-prophecy/Prophecy/Exception/Doubler/ClassMirrorException.phpd(4 edv48Fphpspec-prophecy/Prophecy/Exception/Doubler/ClassNotFoundException.php(4 e}:?phpspec-prophecy/Prophecy/Exception/Doubler/DoubleException.php(4 eV"^@phpspec-prophecy/Prophecy/Exception/Doubler/DoublerException.php(4 ehJphpspec-prophecy/Prophecy/Exception/Doubler/InterfaceNotFoundException.php!(4 e!R3Lphpspec-prophecy/Prophecy/Exception/Doubler/MethodNotExtendableException.php(4 e[Gphpspec-prophecy/Prophecy/Exception/Doubler/MethodNotFoundException.php(4 e#kJphpspec-prophecy/Prophecy/Exception/Doubler/ReturnByReferenceException.php(4 eL?1phpspec-prophecy/Prophecy/Exception/Exception.php(4 ex@phpspec-prophecy/Prophecy/Exception/InvalidArgumentException.php(4 e󱙤Ephpspec-prophecy/Prophecy/Exception/Prediction/AggregateException.php;(4 e;.Lphpspec-prophecy/Prophecy/Exception/Prediction/FailedPredictionException.phpg(4 eg3'}}Cphpspec-prophecy/Prophecy/Exception/Prediction/NoCallsException.php(4 eZFphpspec-prophecy/Prophecy/Exception/Prediction/PredictionException.php(4 eR2ͤPphpspec-prophecy/Prophecy/Exception/Prediction/UnexpectedCallsCountException.php (4 e ڶKphpspec-prophecy/Prophecy/Exception/Prediction/UnexpectedCallsException.php(4 eHphpspec-prophecy/Prophecy/Exception/Prophecy/MethodProphecyException.phpo(4 eoHphpspec-prophecy/Prophecy/Exception/Prophecy/ObjectProphecyException.php(4 eg6ڤBphpspec-prophecy/Prophecy/Exception/Prophecy/ProphecyException.php(4 eD7jIphpspec-prophecy/Prophecy/PhpDocumentor/ClassAndInterfaceTagRetriever.php\(4 e\,|Ϥ=phpspec-prophecy/Prophecy/PhpDocumentor/ClassTagRetriever.php(4 eGphpspec-prophecy/Prophecy/PhpDocumentor/MethodTagRetrieverInterface.php(4 eB7phpspec-prophecy/Prophecy/Prediction/CallPrediction.php"(4 e"Ҷڤ<phpspec-prophecy/Prophecy/Prediction/CallTimesPrediction.phpH (4 eH ,;phpspec-prophecy/Prophecy/Prediction/CallbackPrediction.php(4 e :phpspec-prophecy/Prophecy/Prediction/NoCallsPrediction.php>(4 e>y<phpspec-prophecy/Prophecy/Prediction/PredictionInterface.php(4 eD5phpspec-prophecy/Prophecy/Promise/CallbackPromise.php#(4 e#26phpspec-prophecy/Prophecy/Promise/PromiseInterface.phpa(4 eaĶ= +;phpspec-prophecy/Prophecy/Promise/ReturnArgumentPromise.phpE(4 eEj3phpspec-prophecy/Prophecy/Promise/ReturnPromise.phpu(4 euR2phpspec-prophecy/Prophecy/Promise/ThrowPromise.php +(4 e +cb5phpspec-prophecy/Prophecy/Prophecy/MethodProphecy.phpt<(4 et<n(5phpspec-prophecy/Prophecy/Prophecy/ObjectProphecy.php(4 eVK%8phpspec-prophecy/Prophecy/Prophecy/ProphecyInterface.phpq(4 eqhRw¤?phpspec-prophecy/Prophecy/Prophecy/ProphecySubjectInterface.php(4 eġAr/phpspec-prophecy/Prophecy/Prophecy/Revealer.php(4 e m8phpspec-prophecy/Prophecy/Prophecy/RevealerInterface.phpG(4 eGWnZ%phpspec-prophecy/Prophecy/Prophet.php(4 eNȤ-phpspec-prophecy/Prophecy/Util/ExportUtil.php(4 et-phpspec-prophecy/Prophecy/Util/StringUtil.php +(4 e +v|= phpunit.xsdRF(4 eRFAgphpunit/Exception.php(4 ea#phpunit/Framework/Assert.phpc(4 ectN&phpunit/Framework/Assert/Functions.php (4 e s0phpunit/Framework/Constraint/Boolean/IsFalse.php(4 e/phpunit/Framework/Constraint/Boolean/IsTrue.php(4 e})phpunit/Framework/Constraint/Callback.php?(4 e? +b2phpunit/Framework/Constraint/Cardinality/Count.phpj (4 ej xR@ؤ8phpunit/Framework/Constraint/Cardinality/GreaterThan.php(4 eh,d}4phpunit/Framework/Constraint/Cardinality/IsEmpty.php(4 ehf5phpunit/Framework/Constraint/Cardinality/LessThan.php(4 ea T5phpunit/Framework/Constraint/Cardinality/SameSize.php_(4 e_uŤ+phpunit/Framework/Constraint/Constraint.php"(4 e"*yK1phpunit/Framework/Constraint/Equality/IsEqual.php (4 e \hh?phpunit/Framework/Constraint/Equality/IsEqualCanonicalizing.php +(4 e ~=phpunit/Framework/Constraint/Equality/IsEqualIgnoringCase.php -ec -C\:phpunit/Framework/Constraint/Equality/IsEqualWithDelta.php -ec -64phpunit/Framework/Constraint/Exception/Exception.phpecRu{8phpunit/Framework/Constraint/Exception/ExceptionCode.phpeciأ;phpunit/Framework/Constraint/Exception/ExceptionMessage.phpecw;Lphpunit/Framework/Constraint/Exception/ExceptionMessageRegularExpression.phpecLj[i;phpunit/Framework/Constraint/Filesystem/DirectoryExists.phpjecji+6phpunit/Framework/Constraint/Filesystem/FileExists.phpeeceK6phpunit/Framework/Constraint/Filesystem/IsReadable.phpeece16phpunit/Framework/Constraint/Filesystem/IsWritable.phpeece+phpunit/Framework/Constraint/IsAnything.phpecE,phpunit/Framework/Constraint/IsIdentical.php ec &,phpunit/Framework/Constraint/JsonMatches.phpz ecz 'R@phpunit/Framework/Constraint/JsonMatchesErrorMessageProvider.php5ec5mһ.phpunit/Framework/Constraint/Math/IsFinite.phpecZҗ0phpunit/Framework/Constraint/Math/IsInfinite.phpec'*~+phpunit/Framework/Constraint/Math/IsNan.phpec4g09phpunit/Framework/Constraint/Object/ClassHasAttribute.phphech<%D?phpunit/Framework/Constraint/Object/ClassHasStaticAttribute.phpecݫؤ4phpunit/Framework/Constraint/Object/ObjectEquals.php -ec -0W:phpunit/Framework/Constraint/Object/ObjectHasAttribute.php[ec[Fm8phpunit/Framework/Constraint/Operator/BinaryOperator.phpGecGS\4phpunit/Framework/Constraint/Operator/LogicalAnd.phpecbJ4phpunit/Framework/Constraint/Operator/LogicalNot.php ec 3phpunit/Framework/Constraint/Operator/LogicalOr.phpecZ4phpunit/Framework/Constraint/Operator/LogicalXor.php$ec$O2phpunit/Framework/Constraint/Operator/Operator.php&ec& Dܤ7phpunit/Framework/Constraint/Operator/UnaryOperator.php -ec - a.phpunit/Framework/Constraint/String/IsJson.phpec\@9phpunit/Framework/Constraint/String/RegularExpression.phpec+J6phpunit/Framework/Constraint/String/StringContains.phpecij"6phpunit/Framework/Constraint/String/StringEndsWith.phpec{Fphpunit/Framework/Constraint/String/StringMatchesFormatDescription.php -ec -J8phpunit/Framework/Constraint/String/StringStartsWith.phpBecBߤ8phpunit/Framework/Constraint/Traversable/ArrayHasKey.phpec6@!@phpunit/Framework/Constraint/Traversable/TraversableContains.phpecEphpunit/Framework/Constraint/Traversable/TraversableContainsEqual.phpaecawAIphpunit/Framework/Constraint/Traversable/TraversableContainsIdentical.php'ec'sӤDphpunit/Framework/Constraint/Traversable/TraversableContainsOnly.php ec RuФ2phpunit/Framework/Constraint/Type/IsInstanceOf.php:ec:@,phpunit/Framework/Constraint/Type/IsNull.phpec?),phpunit/Framework/Constraint/Type/IsType.phpecGȤ+phpunit/Framework/DataProviderTestSuite.phpec\8&phpunit/Framework/Error/Deprecated.phpzeczV!phpunit/Framework/Error/Error.phplecl]"phpunit/Framework/Error/Notice.phpvecvˤ#phpunit/Framework/Error/Warning.phpwecwG#phpunit/Framework/ErrorTestCase.phpec̤Aphpunit/Framework/Exception/ActualValueIsNotAnObjectException.phpec`B4phpunit/Framework/Exception/AssertionFailedError.phpec5phpunit/Framework/Exception/CodeCoverageException.phpec[Sphpunit/Framework/Exception/ComparisonMethodDoesNotAcceptParameterTypeException.phpkeckphpunit/Framework/MockObject/Exception/ReflectionException.phpec.ؔLphpunit/Framework/MockObject/Exception/ReturnValueNotConfiguredException.php6ec6?먙;phpunit/Framework/MockObject/Exception/RuntimeException.phpec_|Mphpunit/Framework/MockObject/Exception/SoapExtensionNotAvailableException.phpecz@phpunit/Framework/MockObject/Exception/UnknownClassException.phpec5uW@phpunit/Framework/MockObject/Exception/UnknownTraitException.phpecq¥?phpunit/Framework/MockObject/Exception/UnknownTypeException.phpec~*phpunit/Framework/MockObject/Generator.phpbecbiEۤ6phpunit/Framework/MockObject/Generator/deprecation.tpl;ec;O5s7phpunit/Framework/MockObject/Generator/intersection.tplLecL-X7phpunit/Framework/MockObject/Generator/mocked_class.tplecwZ8phpunit/Framework/MockObject/Generator/mocked_method.tplFecFKFphpunit/Framework/MockObject/Generator/mocked_method_never_or_void.tplecp?phpunit/Framework/MockObject/Generator/mocked_static_method.tplec 4R9phpunit/Framework/MockObject/Generator/proxied_method.tpl}ec}@ėGphpunit/Framework/MockObject/Generator/proxied_method_never_or_void.tplvecvT6phpunit/Framework/MockObject/Generator/trait_class.tplQecQ<Ȥ5phpunit/Framework/MockObject/Generator/wsdl_class.tplec6phpunit/Framework/MockObject/Generator/wsdl_method.tpl<ec<i+phpunit/Framework/MockObject/Invocation.phpecid2phpunit/Framework/MockObject/InvocationHandler.php:ec:ˤ(phpunit/Framework/MockObject/Matcher.phpecD-5phpunit/Framework/MockObject/MethodNameConstraint.php -ec -A1|,phpunit/Framework/MockObject/MockBuilder.phpY+ecY+ϴ=*phpunit/Framework/MockObject/MockClass.phpec'C+phpunit/Framework/MockObject/MockMethod.phpz&ecz&p.phpunit/Framework/MockObject/MockMethodSet.php8ec8G\+phpunit/Framework/MockObject/MockObject.phpecbt*phpunit/Framework/MockObject/MockTrait.phpec&nä)phpunit/Framework/MockObject/MockType.phpecFFt5phpunit/Framework/MockObject/Rule/AnyInvokedCount.phpjecj`Ť3phpunit/Framework/MockObject/Rule/AnyParameters.phpec~';phpunit/Framework/MockObject/Rule/ConsecutiveParameters.phpl ecl z'%5phpunit/Framework/MockObject/Rule/InvocationOrder.phpecLDӤ4phpunit/Framework/MockObject/Rule/InvokedAtIndex.php,ec,kK9phpunit/Framework/MockObject/Rule/InvokedAtLeastCount.phpecB8phpunit/Framework/MockObject/Rule/InvokedAtLeastOnce.php-ec- (8phpunit/Framework/MockObject/Rule/InvokedAtMostCount.phpecgY2phpunit/Framework/MockObject/Rule/InvokedCount.php ec ^ 0phpunit/Framework/MockObject/Rule/MethodName.phpec -WG0phpunit/Framework/MockObject/Rule/Parameters.phpQecQ`g|4phpunit/Framework/MockObject/Rule/ParametersRule.phpcecc?(%phpunit/Framework/MockObject/Stub.phpecŎ6phpunit/Framework/MockObject/Stub/ConsecutiveCalls.php ec ./phpunit/Framework/MockObject/Stub/Exception.php(ec(J4phpunit/Framework/MockObject/Stub/ReturnArgument.phpec?}64phpunit/Framework/MockObject/Stub/ReturnCallback.phpecD0Ӥ5phpunit/Framework/MockObject/Stub/ReturnReference.php ec f0phpunit/Framework/MockObject/Stub/ReturnSelf.php4ec4DD0phpunit/Framework/MockObject/Stub/ReturnStub.phpec4phpunit/Framework/MockObject/Stub/ReturnValueMap.phpecۤ*phpunit/Framework/MockObject/Stub/Stub.php3ec3>++phpunit/Framework/MockObject/Verifiable.phpec̐ s!phpunit/Framework/Reorderable.phpecz0$phpunit/Framework/SelfDescribing.php -ec -s!phpunit/Framework/SkippedTest.phpecS.%phpunit/Framework/SkippedTestCase.phpecl]phpunit/Framework/Test.php~ec~wt!phpunit/Framework/TestBuilder.php"ec"14jphpunit/Framework/TestCase.php$ec$lu!phpunit/Framework/TestFailure.phpec'q"phpunit/Framework/TestListener.phprecrӪc^7phpunit/Framework/TestListenerDefaultImplementation.php'ec'! phpunit/Framework/TestResult.php~ec~+ۤphpunit/Framework/TestSuite.php7cec7c^'phpunit/Framework/TestSuiteIterator.php6ec6$ u%phpunit/Framework/WarningTestCase.php$ec$Hޤ!phpunit/Runner/BaseTestRunner.php ec C +)phpunit/Runner/DefaultTestResultCache.php!ec!/i^phpunit/Runner/Exception.phpeczZ-phpunit/Runner/Extension/ExtensionHandler.php ec Az'phpunit/Runner/Extension/PharLoader.php ec c4phpunit/Runner/Filter/ExcludeGroupFilterIterator.phpsecs} -Z!phpunit/Runner/Filter/Factory.phpecdcΤ-phpunit/Runner/Filter/GroupFilterIterator.phpec=;4phpunit/Runner/Filter/IncludeGroupFilterIterator.phprecrP;AD,phpunit/Runner/Filter/NameFilterIterator.phpv ecv Z/phpunit/Runner/Hook/AfterIncompleteTestHook.php-ec-zԤ)phpunit/Runner/Hook/AfterLastTestHook.phpec0B֤*phpunit/Runner/Hook/AfterRiskyTestHook.php#ec#dm,phpunit/Runner/Hook/AfterSkippedTestHook.php'ec':/phpunit/Runner/Hook/AfterSuccessfulTestHook.phpec5w*phpunit/Runner/Hook/AfterTestErrorHook.php#ec#ݮ,phpunit/Runner/Hook/AfterTestFailureHook.php'ec'2F%phpunit/Runner/Hook/AfterTestHook.phpec;gA,phpunit/Runner/Hook/AfterTestWarningHook.php'ec'':+phpunit/Runner/Hook/BeforeFirstTestHook.phpechWt&phpunit/Runner/Hook/BeforeTestHook.phpec"bphpunit/Runner/Hook/Hook.phpec. phpunit/Runner/Hook/TestHook.phpecZ_ -+phpunit/Runner/Hook/TestListenerAdapter.phpec\6E&phpunit/Runner/NullTestResultCache.phpecW<phpunit/Runner/PhptTestCase.php\Vec\VǙ'phpunit/Runner/ResultCacheExtension.php<ec<6 _*phpunit/Runner/StandardTestSuiteLoader.php ec Ҥm"phpunit/Runner/TestResultCache.phpecK"phpunit/Runner/TestSuiteLoader.phpecޤ"phpunit/Runner/TestSuiteSorter.php,ec,kڤphpunit/Runner/Version.phpecPQ'phpunit/TextUI/CliArguments/Builder.phpTecTɣۤ-phpunit/TextUI/CliArguments/Configuration.phpecX)phpunit/TextUI/CliArguments/Exception.phpec%zE&phpunit/TextUI/CliArguments/Mapper.php+,ec+,'aphpunit/TextUI/Command.phpynecynOJ'phpunit/TextUI/DefaultResultPrinter.phpY7ecY7}G(J&phpunit/TextUI/Exception/Exception.phpecD{i0phpunit/TextUI/Exception/ReflectionException.phpec Y-phpunit/TextUI/Exception/RuntimeException.phpecF;phpunit/TextUI/Exception/TestDirectoryNotFoundException.phpec6phpunit/TextUI/Exception/TestFileNotFoundException.phpecpCphpunit/TextUI/Help.php.ec.  phpunit/TextUI/ResultPrinter.phppecpܤphpunit/TextUI/TestRunner.phpecphpunit/TextUI/XmlConfiguration/CodeCoverage/Report/Clover.phpec=CAphpunit/TextUI/XmlConfiguration/CodeCoverage/Report/Cobertura.phpeci>phpunit/TextUI/XmlConfiguration/CodeCoverage/Report/Crap4j.phpecG<phpunit/TextUI/XmlConfiguration/CodeCoverage/Report/Html.phpecE6;phpunit/TextUI/XmlConfiguration/CodeCoverage/Report/Php.phpecpS<phpunit/TextUI/XmlConfiguration/CodeCoverage/Report/Text.phpecKkw;phpunit/TextUI/XmlConfiguration/CodeCoverage/Report/Xml.phpec?u1phpunit/TextUI/XmlConfiguration/Configuration.php5ec5˞-phpunit/TextUI/XmlConfiguration/Exception.phpecN5+8phpunit/TextUI/XmlConfiguration/Filesystem/Directory.phpec@Bphpunit/TextUI/XmlConfiguration/Filesystem/DirectoryCollection.phpec1EqJphpunit/TextUI/XmlConfiguration/Filesystem/DirectoryCollectionIterator.phpec&3phpunit/TextUI/XmlConfiguration/Filesystem/File.phpec.P =phpunit/TextUI/XmlConfiguration/Filesystem/FileCollection.php~ec~]rEphpunit/TextUI/XmlConfiguration/Filesystem/FileCollectionIterator.phpfecfĤ-phpunit/TextUI/XmlConfiguration/Generator.phpecF /phpunit/TextUI/XmlConfiguration/Group/Group.phpec9phpunit/TextUI/XmlConfiguration/Group/GroupCollection.phpecyAphpunit/TextUI/XmlConfiguration/Group/GroupCollectionIterator.phpqecqY50phpunit/TextUI/XmlConfiguration/Group/Groups.phpec@I*phpunit/TextUI/XmlConfiguration/Loader.phpeccB1phpunit/TextUI/XmlConfiguration/Logging/Junit.phpecciG3phpunit/TextUI/XmlConfiguration/Logging/Logging.php ec ]٤4phpunit/TextUI/XmlConfiguration/Logging/TeamCity.phpec7Z鵤8phpunit/TextUI/XmlConfiguration/Logging/TestDox/Html.phpecV2ܤ8phpunit/TextUI/XmlConfiguration/Logging/TestDox/Text.phpecώ7phpunit/TextUI/XmlConfiguration/Logging/TestDox/Xml.phpect0phpunit/TextUI/XmlConfiguration/Logging/Text.phpecCn>phpunit/TextUI/XmlConfiguration/Migration/MigrationBuilder.php# ec# gGphpunit/TextUI/XmlConfiguration/Migration/MigrationBuilderException.phpecUWĝ@phpunit/TextUI/XmlConfiguration/Migration/MigrationException.phpec\ZHphpunit/TextUI/XmlConfiguration/Migration/Migrations/ConvertLogTypes.phpechoeOphpunit/TextUI/XmlConfiguration/Migration/Migrations/CoverageCloverToReport.phpXecXijOphpunit/TextUI/XmlConfiguration/Migration/Migrations/CoverageCrap4jToReport.phpec$i'Mphpunit/TextUI/XmlConfiguration/Migration/Migrations/CoverageHtmlToReport.phpecՄjLphpunit/TextUI/XmlConfiguration/Migration/Migrations/CoveragePhpToReport.phpFecF^ӤMphpunit/TextUI/XmlConfiguration/Migration/Migrations/CoverageTextToReport.phpecV_Lphpunit/TextUI/XmlConfiguration/Migration/Migrations/CoverageXmlToReport.phpKecK_ Qphpunit/TextUI/XmlConfiguration/Migration/Migrations/IntroduceCoverageElement.phpecUMphpunit/TextUI/XmlConfiguration/Migration/Migrations/LogToReportMigration.phpecUBphpunit/TextUI/XmlConfiguration/Migration/Migrations/Migration.phpec'dphpunit/TextUI/XmlConfiguration/Migration/Migrations/MoveAttributesFromFilterWhitelistToCoverage.phpecU%5Yphpunit/TextUI/XmlConfiguration/Migration/Migrations/MoveAttributesFromRootToCoverage.phpCecCcF[phpunit/TextUI/XmlConfiguration/Migration/Migrations/MoveWhitelistDirectoriesToCoverage.phpec†踤Xphpunit/TextUI/XmlConfiguration/Migration/Migrations/MoveWhitelistExcludesToCoverage.phpecSphpunit/TextUI/XmlConfiguration/Migration/Migrations/RemoveCacheTokensAttribute.phpecwJphpunit/TextUI/XmlConfiguration/Migration/Migrations/RemoveEmptyFilter.php{ec{KGphpunit/TextUI/XmlConfiguration/Migration/Migrations/RemoveLogTypes.phpoeco3Qphpunit/TextUI/XmlConfiguration/Migration/Migrations/UpdateSchemaLocationTo93.phpecbJ6phpunit/TextUI/XmlConfiguration/Migration/Migrator.phpeco$V0phpunit/TextUI/XmlConfiguration/PHP/Constant.php7ec7$Ҥ:phpunit/TextUI/XmlConfiguration/PHP/ConstantCollection.phplecl%(Bphpunit/TextUI/XmlConfiguration/PHP/ConstantCollectionIterator.phpec}=Ƥ2phpunit/TextUI/XmlConfiguration/PHP/IniSetting.phpJecJOt<phpunit/TextUI/XmlConfiguration/PHP/IniSettingCollection.phpecޛ;Dphpunit/TextUI/XmlConfiguration/PHP/IniSettingCollectionIterator.phpec/mo+phpunit/TextUI/XmlConfiguration/PHP/Php.phpec6僤2phpunit/TextUI/XmlConfiguration/PHP/PhpHandler.phpwecw` -0phpunit/TextUI/XmlConfiguration/PHP/Variable.phpecN:phpunit/TextUI/XmlConfiguration/PHP/VariableCollection.phpleclsB@٤Bphpunit/TextUI/XmlConfiguration/PHP/VariableCollectionIterator.phpec!~gȤ5phpunit/TextUI/XmlConfiguration/PHPUnit/Extension.phpec}Q?phpunit/TextUI/XmlConfiguration/PHPUnit/ExtensionCollection.phpeco;RGphpunit/TextUI/XmlConfiguration/PHPUnit/ExtensionCollectionIterator.phpec|D?3phpunit/TextUI/XmlConfiguration/PHPUnit/PHPUnit.phplCeclCv;phpunit/TextUI/XmlConfiguration/TestSuite/TestDirectory.phpCecC0Ephpunit/TextUI/XmlConfiguration/TestSuite/TestDirectoryCollection.phpecLCMphpunit/TextUI/XmlConfiguration/TestSuite/TestDirectoryCollectionIterator.phpecn6phpunit/TextUI/XmlConfiguration/TestSuite/TestFile.phpec?y@phpunit/TextUI/XmlConfiguration/TestSuite/TestFileCollection.phpecXHphpunit/TextUI/XmlConfiguration/TestSuite/TestFileCollectionIterator.phpzeczX17phpunit/TextUI/XmlConfiguration/TestSuite/TestSuite.phpec8wAphpunit/TextUI/XmlConfiguration/TestSuite/TestSuiteCollection.phpec/jIphpunit/TextUI/XmlConfiguration/TestSuite/TestSuiteCollectionIterator.phpec+6$phpunit/Util/Annotation/DocBlock.phpAecA+$phpunit/Util/Annotation/Registry.phpN -ecN -?caphpunit/Util/Blacklist.phpecsphpunit/Util/Cloner.phpec"Ɩܤphpunit/Util/Color.phpecj?phpunit/Util/ErrorHandler.phpec=phpunit/Util/Exception.phpec다phpunit/Util/ExcludeList.phpecphpunit/Util/FileLoader.php ec 'phpunit/Util/Filesystem.phpecܐphpunit/Util/Filter.php ec ćphpunit/Util/GlobalState.php>ec>phǤ(phpunit/Util/InvalidDataSetException.phpec1 phpunit/Util/Json.phpE ecE !phpunit/Util/Log/JUnit.phpb*ecb*}3phpunit/Util/Log/TeamCity.phpy&ecy&4g'phpunit/Util/PHP/AbstractPhpProcess.php&ec&%m&phpunit/Util/PHP/DefaultPhpProcess.phpzeczCp*phpunit/Util/PHP/Template/PhptTestCase.tplec+phpunit/Util/PHP/Template/TestCaseClass.tplp ecp 3 H݀,phpunit/Util/PHP/Template/TestCaseMethod.tpl ec mD&phpunit/Util/PHP/WindowsPhpProcess.phpec)aBphpunit/Util/Printer.php ec shphpunit/Util/Reflection.phpecW챤"phpunit/Util/RegularExpression.phpec0uR)phpunit/Util/Test.php]ec] *phpunit/Util/TestDox/CliTestDoxPrinter.php(*ec(*@f*phpunit/Util/TestDox/HtmlResultPrinter.php -ec -t&'phpunit/Util/TestDox/NamePrettifier.php/"ec/"p~J&phpunit/Util/TestDox/ResultPrinter.php"ec"1q$'phpunit/Util/TestDox/TestDoxPrinter.php)ec)K̤*phpunit/Util/TestDox/TextResultPrinter.phpecȹ!.)phpunit/Util/TestDox/XmlResultPrinter.phpecQ%phpunit/Util/TextTestListRenderer.php6ec6.phpunit/Util/Type.phpec|ä*phpunit/Util/VersionComparisonOperator.phpecb,phpunit/Util/XdebugFilterScriptGenerator.phpwecwتphpunit/Util/Xml.phpec̤phpunit/Util/Xml/Exception.phpecӤ0phpunit/Util/Xml/FailedSchemaDetectionResult.phpec#Sphpunit/Util/Xml/Loader.php ec ,?*phpunit/Util/Xml/SchemaDetectionResult.phpec4χz#phpunit/Util/Xml/SchemaDetector.php-ec-!phpunit/Util/Xml/SchemaFinder.phpec9:8%phpunit/Util/Xml/SnapshotNodeList.phpHecH ^d4phpunit/Util/Xml/SuccessfulSchemaDetectionResult.php'ec'g%phpunit/Util/Xml/ValidationResult.phpecxv:phpunit/Util/Xml/Validator.phpecV$phpunit/Util/XmlTestListRenderer.php -ec -8sbom.xml /ec / -/wschema/8.5.xsdBecB贅schema/9.2.xsdBecB|lsebastian-cli-parser/LICENSEecusebastian-cli-parser/Parser.phpeckM<sebastian-cli-parser/exceptions/AmbiguousOptionException.phpFecFm\-sebastian-cli-parser/exceptions/Exception.phpuecuӫGsebastian-cli-parser/exceptions/OptionDoesNotAllowArgumentException.php_ec_|13Jsebastian-cli-parser/exceptions/RequiredOptionArgumentMissingException.phphechC:sebastian-cli-parser/exceptions/UnknownOptionException.php?ec?vD*sebastian-code-unit-reverse-lookup/LICENSEec3G (-sebastian-code-unit-reverse-lookup/Wizard.php ec }Z['sebastian-code-unit/ClassMethodUnit.phpec@[!sebastian-code-unit/ClassUnit.phpecF sebastian-code-unit/CodeUnit.php~%ec~%D){*sebastian-code-unit/CodeUnitCollection.phpecJ2sebastian-code-unit/CodeUnitCollectionIterator.php;ec;Lʤ$sebastian-code-unit/FunctionUnit.phpec`+sebastian-code-unit/InterfaceMethodUnit.phpecǦ%sebastian-code-unit/InterfaceUnit.phpeccsebastian-code-unit/LICENSE ec psebastian-code-unit/Mapper.php-ec-#'sebastian-code-unit/TraitMethodUnit.phpecqz!sebastian-code-unit/TraitUnit.phpecXA,sebastian-code-unit/exceptions/Exception.phpsecstg;sebastian-code-unit/exceptions/InvalidCodeUnitException.phpec6-3sebastian-code-unit/exceptions/NoTraitException.phpecQ36sebastian-code-unit/exceptions/ReflectionException.phpec$(sebastian-comparator/ArrayComparator.phpuecuEmhf#sebastian-comparator/Comparator.phpect*sebastian-comparator/ComparisonFailure.php ec %*sebastian-comparator/DOMNodeComparator.php ec 1i+sebastian-comparator/DateTimeComparator.php ec KQ)sebastian-comparator/DoubleComparator.phpec:n,sebastian-comparator/ExceptionComparator.phpec1 sebastian-comparator/Factory.phpec?Nsebastian-comparator/LICENSE ec =(-sebastian-comparator/MockObjectComparator.phpecI*sebastian-comparator/NumericComparator.php3 ec3 i{l)sebastian-comparator/ObjectComparator.phpX ecX ׌+sebastian-comparator/ResourceComparator.phpecJ)sebastian-comparator/ScalarComparator.php/ ec/ dF3sebastian-comparator/SplObjectStorageComparator.phpec?/'sebastian-comparator/TypeComparator.phpeccX\-sebastian-comparator/exceptions/Exception.phpvecvEᵤ4sebastian-comparator/exceptions/RuntimeException.phpecV'#sebastian-complexity/Calculator.phpe ece (6.sebastian-complexity/Complexity/Complexity.phpQecQl8sebastian-complexity/Complexity/ComplexityCollection.phpecil@sebastian-complexity/Complexity/ComplexityCollectionIterator.php,ec,e,sebastian-complexity/Exception/Exception.phpvecv73sebastian-complexity/Exception/RuntimeException.phpecCdWsebastian-complexity/LICENSEec=ݤ=sebastian-complexity/Visitor/ComplexityCalculatingVisitor.php ec OGsebastian-complexity/Visitor/CyclomaticComplexityCalculatingVisitor.php ec 7Ysebastian-diff/Chunk.php_ec_vsebastian-diff/Diff.phpjecjbXAsebastian-diff/Differ.php $ec $wkz3sebastian-diff/Exception/ConfigurationException.php=ec=1/Ff&sebastian-diff/Exception/Exception.phpjecj05sebastian-diff/Exception/InvalidArgumentException.phpecqsebastian-diff/LICENSE ec a1sebastian-diff/Line.phpLecL -q5sebastian-diff/LongestCommonSubsequenceCalculator.phpec}e7zDsebastian-diff/MemoryEfficientLongestCommonSubsequenceCalculator.phpec9 4sebastian-diff/Output/AbstractChunkOutputBuilder.phpec\t/sebastian-diff/Output/DiffOnlyOutputBuilder.phpzeczc4sebastian-diff/Output/DiffOutputBuilderInterface.phpecV8sebastian-diff/Output/StrictUnifiedDiffOutputBuilder.php(ec(kv2sebastian-diff/Output/UnifiedDiffOutputBuilder.php>ec>'q)sebastian-diff/Parser.php ec X{Bsebastian-diff/TimeEfficientLongestCommonSubsequenceCalculator.phpect٤!sebastian-environment/Console.phpec72e4sebastian-environment/LICENSEecFy٤)sebastian-environment/OperatingSystem.phpec̄!sebastian-environment/Runtime.phpecY/sebastian-exporter/Exporter.phpx$ecx$sebastian-exporter/LICENSEec 5٤'sebastian-global-state/CodeExporter.php ec &sebastian-global-state/ExcludeList.php -ec -R{sebastian-global-state/LICENSEecJ#sebastian-global-state/Restorer.phpecGJ #sebastian-global-state/Snapshot.php*ec*X%/sebastian-global-state/exceptions/Exception.phpyecyJ6sebastian-global-state/exceptions/RuntimeException.phpec;#sebastian-lines-of-code/Counter.phpecH5/sebastian-lines-of-code/Exception/Exception.phpzecz aV>sebastian-lines-of-code/Exception/IllogicalValuesException.phpecG<sebastian-lines-of-code/Exception/NegativeValueException.phpec -ڤ6sebastian-lines-of-code/Exception/RuntimeException.phpecKsebastian-lines-of-code/LICENSEecbS~/sebastian-lines-of-code/LineCountingVisitor.phpec~A'sebastian-lines-of-code/LinesOfCode.php ec fӤ*sebastian-object-enumerator/Enumerator.phpecx})sebastian-object-enumerator/Exception.phpec}Ȥ8sebastian-object-enumerator/InvalidArgumentException.phpecâ(sebastian-object-reflector/Exception.phpecЬۤ7sebastian-object-reflector/InvalidArgumentException.phpec -M.sebastian-object-reflector/ObjectReflector.phpec_'sebastian-recursion-context/Context.phpecaDy)sebastian-recursion-context/Exception.phpecPFA8sebastian-recursion-context/InvalidArgumentException.phpecb21#sebastian-recursion-context/LICENSEec`%sebastian-resource-operations/LICENSEec]<4sebastian-resource-operations/ResourceOperations.php߲ec߲sebastian-type/LICENSE ec &.sebastian-type/Parameter.phpec,#sebastian-type/ReflectionMapper.phppecp&ޤsebastian-type/TypeName.php:ec:n -&sebastian-type/exception/Exception.phpjecjbᮧ-sebastian-type/exception/RuntimeException.phpec%$sebastian-type/type/CallableType.phpecŵ`!sebastian-type/type/FalseType.phpbecb_&)sebastian-type/type/GenericObjectType.php<ec<Ch(sebastian-type/type/IntersectionType.phpd -ecd -nc$sebastian-type/type/IterableType.phpecf!sebastian-type/type/MixedType.php'ec'o!sebastian-type/type/NeverType.phpecFҹ sebastian-type/type/NullType.php"ec"9$F"sebastian-type/type/ObjectType.php]ec]L&"sebastian-type/type/SimpleType.phpec]"sebastian-type/type/StaticType.phpecj~ sebastian-type/type/TrueType.php]ec]<iפsebastian-type/type/Type.phpecDje!sebastian-type/type/UnionType.php$ ec$ )#sebastian-type/type/UnknownType.phpecǤ sebastian-type/type/VoidType.phpecsebastian-version/LICENSEecZsebastian-version/Version.phpec ƪtheseer-tokenizer/Exception.phpnecn'Ǥtheseer-tokenizer/LICENSEecR ("theseer-tokenizer/NamespaceUri.phpHecH=C+theseer-tokenizer/NamespaceUriException.phpyecy'Hetheseer-tokenizer/Token.phpec4%theseer-tokenizer/TokenCollection.php -ec -a.theseer-tokenizer/TokenCollectionException.php|ec|`g-theseer-tokenizer/Tokenizer.php -ec -zl#theseer-tokenizer/XMLSerializer.phpecg; webmozart-assert/Assert.phpecYT-webmozart-assert/InvalidArgumentException.phpbecbAwebmozart-assert/LICENSE<ec<t}webmozart-assert/Mixin.php.ec. a.phpstorm.meta.phpecO8phpunit/Framework/Constraint/Traversable/ArrayHasKey.php(4 e6@!@phpunit/Framework/Constraint/Traversable/TraversableContains.php(4 eEphpunit/Framework/Constraint/Traversable/TraversableContainsEqual.phpa(4 eawAIphpunit/Framework/Constraint/Traversable/TraversableContainsIdentical.php'(4 e'sӤDphpunit/Framework/Constraint/Traversable/TraversableContainsOnly.php (4 e RuФ2phpunit/Framework/Constraint/Type/IsInstanceOf.php:(4 e:@,phpunit/Framework/Constraint/Type/IsNull.php(4 e?),phpunit/Framework/Constraint/Type/IsType.php(4 eGȤ+phpunit/Framework/DataProviderTestSuite.php(4 e\8&phpunit/Framework/Error/Deprecated.phpz(4 ezV!phpunit/Framework/Error/Error.phpl(4 el]"phpunit/Framework/Error/Notice.phpv(4 evˤ#phpunit/Framework/Error/Warning.phpw(4 ewG#phpunit/Framework/ErrorTestCase.php(4 ecȶAphpunit/Framework/Exception/ActualValueIsNotAnObjectException.php(4 e`B4phpunit/Framework/Exception/AssertionFailedError.php(4 e5phpunit/Framework/Exception/CodeCoverageException.php(4 e[Sphpunit/Framework/Exception/ComparisonMethodDoesNotAcceptParameterTypeException.phpk(4 ek:phpunit/Framework/MockObject/Builder/InvocationStubber.php(4 e8phpunit/Framework/MockObject/Builder/MethodNameMatch.phpw(4 ewTy8phpunit/Framework/MockObject/Builder/ParametersMatch.php(4 eڃ-phpunit/Framework/MockObject/Builder/Stub.php(4 e(3phpunit/Framework/MockObject/ConfigurableMethod.php(4 eAphpunit/Framework/MockObject/Exception/BadMethodCallException.php(4 eΫXGphpunit/Framework/MockObject/Exception/CannotUseAddMethodsException.php5(4 e5{Hphpunit/Framework/MockObject/Exception/CannotUseOnlyMethodsException.phpE(4 eEFphpunit/Framework/MockObject/Exception/ClassAlreadyExistsException.php(4 e@phpunit/Framework/MockObject/Exception/ClassIsFinalException.php(4 e()Cphpunit/Framework/MockObject/Exception/ClassIsReadonlyException.php(4 eOuXYphpunit/Framework/MockObject/Exception/ConfigurableMethodsAlreadyInitializedException.php (4 e ɅWCphpunit/Framework/MockObject/Exception/DuplicateMethodException.php(4 ey4phpunit/Framework/MockObject/Exception/Exception.php(4 eB'Kphpunit/Framework/MockObject/Exception/IncompatibleReturnValueException.php(4 e3dfEphpunit/Framework/MockObject/Exception/InvalidMethodNameException.php(4 e ܤHphpunit/Framework/MockObject/Exception/MatchBuilderNotFoundException.php(4 eLphpunit/Framework/MockObject/Exception/MatcherAlreadyRegisteredException.php(4 ez'Lphpunit/Framework/MockObject/Exception/MethodCannotBeConfiguredException.php(4 e}QOphpunit/Framework/MockObject/Exception/MethodNameAlreadyConfiguredException.php(4 eӁƤKphpunit/Framework/MockObject/Exception/MethodNameNotConfiguredException.php~(4 e~x1)Uphpunit/Framework/MockObject/Exception/MethodParametersAlreadyConfiguredException.php(4 e rYphpunit/Framework/MockObject/Exception/OriginalConstructorInvocationRequiredException.php(4 eک>phpunit/Framework/MockObject/Exception/ReflectionException.php(4 e.ؔLphpunit/Framework/MockObject/Exception/ReturnValueNotConfiguredException.php6(4 e6?먙;phpunit/Framework/MockObject/Exception/RuntimeException.php(4 e_|Mphpunit/Framework/MockObject/Exception/SoapExtensionNotAvailableException.php(4 ez@phpunit/Framework/MockObject/Exception/UnknownClassException.php(4 e5uW@phpunit/Framework/MockObject/Exception/UnknownTraitException.php(4 eq¥?phpunit/Framework/MockObject/Exception/UnknownTypeException.php(4 e~*phpunit/Framework/MockObject/Generator.phpb(4 ebiEۤ6phpunit/Framework/MockObject/Generator/deprecation.tpl;(4 e;O5s7phpunit/Framework/MockObject/Generator/intersection.tplL(4 eL-X7phpunit/Framework/MockObject/Generator/mocked_class.tpl(4 ewZ8phpunit/Framework/MockObject/Generator/mocked_method.tplF(4 eFKFphpunit/Framework/MockObject/Generator/mocked_method_never_or_void.tpl(4 ep?phpunit/Framework/MockObject/Generator/mocked_static_method.tpl(4 e 4R9phpunit/Framework/MockObject/Generator/proxied_method.tpl}(4 e}@ėGphpunit/Framework/MockObject/Generator/proxied_method_never_or_void.tplv(4 evT6phpunit/Framework/MockObject/Generator/trait_class.tplQ(4 eQ<Ȥ5phpunit/Framework/MockObject/Generator/wsdl_class.tpl(4 e6phpunit/Framework/MockObject/Generator/wsdl_method.tpl<(4 e<i+phpunit/Framework/MockObject/Invocation.php(4 eid2phpunit/Framework/MockObject/InvocationHandler.php:(4 e:ˤ(phpunit/Framework/MockObject/Matcher.php(4 eD-5phpunit/Framework/MockObject/MethodNameConstraint.php +(4 e +A1|,phpunit/Framework/MockObject/MockBuilder.phpY+(4 eY+ϴ=*phpunit/Framework/MockObject/MockClass.php(4 e'C+phpunit/Framework/MockObject/MockMethod.phpz&(4 ez&p.phpunit/Framework/MockObject/MockMethodSet.php8(4 e8G\+phpunit/Framework/MockObject/MockObject.php(4 ebt*phpunit/Framework/MockObject/MockTrait.php(4 e&nä)phpunit/Framework/MockObject/MockType.php(4 eFFt5phpunit/Framework/MockObject/Rule/AnyInvokedCount.phpj(4 ej`Ť3phpunit/Framework/MockObject/Rule/AnyParameters.php(4 e~';phpunit/Framework/MockObject/Rule/ConsecutiveParameters.php~ (4 e~ 5phpunit/Framework/MockObject/Rule/InvocationOrder.php(4 eLDӤ4phpunit/Framework/MockObject/Rule/InvokedAtIndex.php,(4 e,kK9phpunit/Framework/MockObject/Rule/InvokedAtLeastCount.php(4 eB8phpunit/Framework/MockObject/Rule/InvokedAtLeastOnce.php-(4 e- (8phpunit/Framework/MockObject/Rule/InvokedAtMostCount.php(4 egY2phpunit/Framework/MockObject/Rule/InvokedCount.php (4 e ^ 0phpunit/Framework/MockObject/Rule/MethodName.php(4 e +WG0phpunit/Framework/MockObject/Rule/Parameters.phpQ(4 eQ`g|4phpunit/Framework/MockObject/Rule/ParametersRule.phpc(4 ec?(%phpunit/Framework/MockObject/Stub.php(4 eŎ6phpunit/Framework/MockObject/Stub/ConsecutiveCalls.php (4 e ./phpunit/Framework/MockObject/Stub/Exception.php((4 e(J4phpunit/Framework/MockObject/Stub/ReturnArgument.php(4 e?}64phpunit/Framework/MockObject/Stub/ReturnCallback.php(4 eD0Ӥ5phpunit/Framework/MockObject/Stub/ReturnReference.php (4 e f0phpunit/Framework/MockObject/Stub/ReturnSelf.php4(4 e4DD0phpunit/Framework/MockObject/Stub/ReturnStub.php(4 e4phpunit/Framework/MockObject/Stub/ReturnValueMap.php(4 eۤ*phpunit/Framework/MockObject/Stub/Stub.php3(4 e3>++phpunit/Framework/MockObject/Verifiable.php(4 e̐ s!phpunit/Framework/Reorderable.php(4 ez0$phpunit/Framework/SelfDescribing.php +(4 e +s!phpunit/Framework/SkippedTest.php(4 eS.%phpunit/Framework/SkippedTestCase.php(4 eQKhphpunit/Framework/Test.php~(4 e~wt!phpunit/Framework/TestBuilder.php"(4 e"14jphpunit/Framework/TestCase.php.(4 e.] !phpunit/Framework/TestFailure.php(4 e'q"phpunit/Framework/TestListener.phpr(4 erӪc^7phpunit/Framework/TestListenerDefaultImplementation.php'(4 e'! phpunit/Framework/TestResult.php +(4 e +rOphpunit/Framework/TestSuite.phpQd(4 eQd5ܛ'phpunit/Framework/TestSuiteIterator.php6(4 e6$ u%phpunit/Framework/WarningTestCase.php'(4 e'n@ !phpunit/Runner/BaseTestRunner.php (4 e C +)phpunit/Runner/DefaultTestResultCache.php!(4 e!/i^phpunit/Runner/Exception.php(4 ezZ-phpunit/Runner/Extension/ExtensionHandler.php (4 e Az'phpunit/Runner/Extension/PharLoader.php (4 e /4phpunit/Runner/Filter/ExcludeGroupFilterIterator.phps(4 es} +Z!phpunit/Runner/Filter/Factory.php(4 edcΤ-phpunit/Runner/Filter/GroupFilterIterator.php(4 e=;4phpunit/Runner/Filter/IncludeGroupFilterIterator.phpr(4 erP;AD,phpunit/Runner/Filter/NameFilterIterator.phpv (4 ev Z/phpunit/Runner/Hook/AfterIncompleteTestHook.php-(4 e-zԤ)phpunit/Runner/Hook/AfterLastTestHook.php(4 e0B֤*phpunit/Runner/Hook/AfterRiskyTestHook.php#(4 e#dm,phpunit/Runner/Hook/AfterSkippedTestHook.php'(4 e':/phpunit/Runner/Hook/AfterSuccessfulTestHook.php(4 e5w*phpunit/Runner/Hook/AfterTestErrorHook.php#(4 e#ݮ,phpunit/Runner/Hook/AfterTestFailureHook.php'(4 e'2F%phpunit/Runner/Hook/AfterTestHook.php(4 e;gA,phpunit/Runner/Hook/AfterTestWarningHook.php'(4 e'':+phpunit/Runner/Hook/BeforeFirstTestHook.php(4 ehWt&phpunit/Runner/Hook/BeforeTestHook.php(4 e"bphpunit/Runner/Hook/Hook.php(4 e. phpunit/Runner/Hook/TestHook.php(4 eZ_ ++phpunit/Runner/Hook/TestListenerAdapter.php(4 e\6E&phpunit/Runner/NullTestResultCache.php(4 eW<phpunit/Runner/PhptTestCase.phpRV(4 eRVԴO'phpunit/Runner/ResultCacheExtension.php<(4 e<6 _*phpunit/Runner/StandardTestSuiteLoader.php(4 e;i Ȥ"phpunit/Runner/TestResultCache.php(4 eK"phpunit/Runner/TestSuiteLoader.php(4 eޤ"phpunit/Runner/TestSuiteSorter.php,(4 e,kڤphpunit/Runner/Version.php(4 e'phpunit/TextUI/CliArguments/Builder.phpT(4 eTɣۤ-phpunit/TextUI/CliArguments/Configuration.php(4 eX)phpunit/TextUI/CliArguments/Exception.php(4 e%zE&phpunit/TextUI/CliArguments/Mapper.php+,(4 e+,'aphpunit/TextUI/Command.php`o(4 e`o;e"'phpunit/TextUI/DefaultResultPrinter.phpY7(4 eY7}G(J&phpunit/TextUI/Exception/Exception.php(4 eD{i0phpunit/TextUI/Exception/ReflectionException.php(4 e Y-phpunit/TextUI/Exception/RuntimeException.php(4 eF;phpunit/TextUI/Exception/TestDirectoryNotFoundException.php(4 e6phpunit/TextUI/Exception/TestFileNotFoundException.php(4 epCphpunit/TextUI/Help.php.(4 e.  phpunit/TextUI/ResultPrinter.phpp(4 epܤphpunit/TextUI/TestRunner.php(4 eG"phpunit/TextUI/TestSuiteMapper.php (4 e +;-=phpunit/TextUI/XmlConfiguration/CodeCoverage/CodeCoverage.php(4 erAphpunit/TextUI/XmlConfiguration/CodeCoverage/Filter/Directory.php(4 ec{Kphpunit/TextUI/XmlConfiguration/CodeCoverage/Filter/DirectoryCollection.php(4 eju}Sphpunit/TextUI/XmlConfiguration/CodeCoverage/Filter/DirectoryCollectionIterator.php(4 eJ=phpunit/TextUI/XmlConfiguration/CodeCoverage/FilterMapper.php(4 e}ݚ>phpunit/TextUI/XmlConfiguration/CodeCoverage/Report/Clover.php(4 e=CAphpunit/TextUI/XmlConfiguration/CodeCoverage/Report/Cobertura.php(4 ei>phpunit/TextUI/XmlConfiguration/CodeCoverage/Report/Crap4j.php(4 eG<phpunit/TextUI/XmlConfiguration/CodeCoverage/Report/Html.php(4 eE6;phpunit/TextUI/XmlConfiguration/CodeCoverage/Report/Php.php(4 epS<phpunit/TextUI/XmlConfiguration/CodeCoverage/Report/Text.php(4 eKkw;phpunit/TextUI/XmlConfiguration/CodeCoverage/Report/Xml.php(4 e?u1phpunit/TextUI/XmlConfiguration/Configuration.php5(4 e5˞-phpunit/TextUI/XmlConfiguration/Exception.php(4 eN5+8phpunit/TextUI/XmlConfiguration/Filesystem/Directory.php(4 e@Bphpunit/TextUI/XmlConfiguration/Filesystem/DirectoryCollection.php(4 e1EqJphpunit/TextUI/XmlConfiguration/Filesystem/DirectoryCollectionIterator.php(4 e&3phpunit/TextUI/XmlConfiguration/Filesystem/File.php(4 e.P =phpunit/TextUI/XmlConfiguration/Filesystem/FileCollection.php~(4 e~]rEphpunit/TextUI/XmlConfiguration/Filesystem/FileCollectionIterator.phpf(4 efĤ-phpunit/TextUI/XmlConfiguration/Generator.php(4 eF /phpunit/TextUI/XmlConfiguration/Group/Group.php(4 e9phpunit/TextUI/XmlConfiguration/Group/GroupCollection.php(4 eyAphpunit/TextUI/XmlConfiguration/Group/GroupCollectionIterator.phpq(4 eqY50phpunit/TextUI/XmlConfiguration/Group/Groups.php(4 e@I*phpunit/TextUI/XmlConfiguration/Loader.php(4 ecB1phpunit/TextUI/XmlConfiguration/Logging/Junit.php(4 eciG3phpunit/TextUI/XmlConfiguration/Logging/Logging.php (4 e ]٤4phpunit/TextUI/XmlConfiguration/Logging/TeamCity.php(4 e7Z鵤8phpunit/TextUI/XmlConfiguration/Logging/TestDox/Html.php(4 eV2ܤ8phpunit/TextUI/XmlConfiguration/Logging/TestDox/Text.php(4 eώ7phpunit/TextUI/XmlConfiguration/Logging/TestDox/Xml.php(4 et0phpunit/TextUI/XmlConfiguration/Logging/Text.php(4 eCn>phpunit/TextUI/XmlConfiguration/Migration/MigrationBuilder.php (4 e r:Gphpunit/TextUI/XmlConfiguration/Migration/MigrationBuilderException.php(4 eUWĝ@phpunit/TextUI/XmlConfiguration/Migration/MigrationException.php(4 e\ZHphpunit/TextUI/XmlConfiguration/Migration/Migrations/ConvertLogTypes.php(4 ehoeOphpunit/TextUI/XmlConfiguration/Migration/Migrations/CoverageCloverToReport.phpX(4 eXijOphpunit/TextUI/XmlConfiguration/Migration/Migrations/CoverageCrap4jToReport.php(4 e$i'Mphpunit/TextUI/XmlConfiguration/Migration/Migrations/CoverageHtmlToReport.php(4 eՄjLphpunit/TextUI/XmlConfiguration/Migration/Migrations/CoveragePhpToReport.phpF(4 eF^ӤMphpunit/TextUI/XmlConfiguration/Migration/Migrations/CoverageTextToReport.php(4 eV_Lphpunit/TextUI/XmlConfiguration/Migration/Migrations/CoverageXmlToReport.phpK(4 eK_ Qphpunit/TextUI/XmlConfiguration/Migration/Migrations/IntroduceCoverageElement.php(4 eUMphpunit/TextUI/XmlConfiguration/Migration/Migrations/LogToReportMigration.php(4 eUBphpunit/TextUI/XmlConfiguration/Migration/Migrations/Migration.php(4 e'dphpunit/TextUI/XmlConfiguration/Migration/Migrations/MoveAttributesFromFilterWhitelistToCoverage.php(4 eU%5Yphpunit/TextUI/XmlConfiguration/Migration/Migrations/MoveAttributesFromRootToCoverage.phpC(4 eCcFXphpunit/TextUI/XmlConfiguration/Migration/Migrations/MoveWhitelistExcludesToCoverage.php(4 eXphpunit/TextUI/XmlConfiguration/Migration/Migrations/MoveWhitelistIncludesToCoverage.php(4 etSphpunit/TextUI/XmlConfiguration/Migration/Migrations/RemoveCacheTokensAttribute.php(4 ewJphpunit/TextUI/XmlConfiguration/Migration/Migrations/RemoveEmptyFilter.php{(4 e{KGphpunit/TextUI/XmlConfiguration/Migration/Migrations/RemoveLogTypes.phpo(4 eo3Qphpunit/TextUI/XmlConfiguration/Migration/Migrations/UpdateSchemaLocationTo93.php(4 ebJ6phpunit/TextUI/XmlConfiguration/Migration/Migrator.php(4 eo$V0phpunit/TextUI/XmlConfiguration/PHP/Constant.php7(4 e7$Ҥ:phpunit/TextUI/XmlConfiguration/PHP/ConstantCollection.phpl(4 el%(Bphpunit/TextUI/XmlConfiguration/PHP/ConstantCollectionIterator.php(4 e}=Ƥ2phpunit/TextUI/XmlConfiguration/PHP/IniSetting.phpJ(4 eJOt<phpunit/TextUI/XmlConfiguration/PHP/IniSettingCollection.php(4 eޛ;Dphpunit/TextUI/XmlConfiguration/PHP/IniSettingCollectionIterator.php(4 e/mo+phpunit/TextUI/XmlConfiguration/PHP/Php.php(4 e6僤2phpunit/TextUI/XmlConfiguration/PHP/PhpHandler.phpw(4 ew` +0phpunit/TextUI/XmlConfiguration/PHP/Variable.php(4 eN:phpunit/TextUI/XmlConfiguration/PHP/VariableCollection.phpl(4 elsB@٤Bphpunit/TextUI/XmlConfiguration/PHP/VariableCollectionIterator.php(4 e!~gȤ5phpunit/TextUI/XmlConfiguration/PHPUnit/Extension.php(4 e}Q?phpunit/TextUI/XmlConfiguration/PHPUnit/ExtensionCollection.php(4 eo;RGphpunit/TextUI/XmlConfiguration/PHPUnit/ExtensionCollectionIterator.php(4 e|D?3phpunit/TextUI/XmlConfiguration/PHPUnit/PHPUnit.phplC(4 elCv;phpunit/TextUI/XmlConfiguration/TestSuite/TestDirectory.phpC(4 eC0Ephpunit/TextUI/XmlConfiguration/TestSuite/TestDirectoryCollection.php(4 eLCMphpunit/TextUI/XmlConfiguration/TestSuite/TestDirectoryCollectionIterator.php(4 en6phpunit/TextUI/XmlConfiguration/TestSuite/TestFile.php(4 e?y@phpunit/TextUI/XmlConfiguration/TestSuite/TestFileCollection.php(4 eXHphpunit/TextUI/XmlConfiguration/TestSuite/TestFileCollectionIterator.phpz(4 ezX17phpunit/TextUI/XmlConfiguration/TestSuite/TestSuite.php(4 e8wAphpunit/TextUI/XmlConfiguration/TestSuite/TestSuiteCollection.php(4 e/jIphpunit/TextUI/XmlConfiguration/TestSuite/TestSuiteCollectionIterator.php(4 e+6$phpunit/Util/Annotation/DocBlock.php@(4 e@n"$phpunit/Util/Annotation/Registry.phpN +(4 eN +?caphpunit/Util/Blacklist.php(4 esphpunit/Util/Cloner.php(4 e"Ɩܤphpunit/Util/Color.php(4 ej?phpunit/Util/ErrorHandler.php(4 e=phpunit/Util/Exception.php(4 e다phpunit/Util/ExcludeList.php(4 efphpunit/Util/FileLoader.php (4 e 'phpunit/Util/Filesystem.php(4 eܐphpunit/Util/Filter.php (4 e l* phpunit/Util/GlobalState.php(4 el(phpunit/Util/InvalidDataSetException.php(4 e1 phpunit/Util/Json.phpE (4 eE !phpunit/Util/Log/JUnit.phpb*(4 eb*}3phpunit/Util/Log/TeamCity.phpy&(4 ey&4g'phpunit/Util/PHP/AbstractPhpProcess.php'(4 e'-Eʤ&phpunit/Util/PHP/DefaultPhpProcess.phpz(4 ezCp*phpunit/Util/PHP/Template/PhptTestCase.tpl(4 e+phpunit/Util/PHP/Template/TestCaseClass.tpl (4 e #,phpunit/Util/PHP/Template/TestCaseMethod.tpl*(4 e* &phpunit/Util/PHP/WindowsPhpProcess.php(4 e)aBphpunit/Util/Printer.php (4 e shphpunit/Util/Reflection.php(4 eW챤"phpunit/Util/RegularExpression.php(4 e0uR)phpunit/Util/Test.php](4 e]1fä*phpunit/Util/TestDox/CliTestDoxPrinter.php(*(4 e(*@f*phpunit/Util/TestDox/HtmlResultPrinter.php (4 e 3~ʤ'phpunit/Util/TestDox/NamePrettifier.php/"(4 e/"p~J&phpunit/Util/TestDox/ResultPrinter.php"(4 e"1q$'phpunit/Util/TestDox/TestDoxPrinter.php)(4 e)K̤*phpunit/Util/TestDox/TextResultPrinter.php(4 eȹ!.)phpunit/Util/TestDox/XmlResultPrinter.php(4 eQ%phpunit/Util/TextTestListRenderer.php6(4 e6.phpunit/Util/Type.php(4 e|ä*phpunit/Util/VersionComparisonOperator.php(4 eb,phpunit/Util/XdebugFilterScriptGenerator.phpw(4 ewتphpunit/Util/Xml.php(4 e̤phpunit/Util/Xml/Exception.php(4 eӤ0phpunit/Util/Xml/FailedSchemaDetectionResult.php(4 e#Sphpunit/Util/Xml/Loader.php (4 e ,?*phpunit/Util/Xml/SchemaDetectionResult.php(4 e4χz#phpunit/Util/Xml/SchemaDetector.php-(4 e-!phpunit/Util/Xml/SchemaFinder.php(4 eS%phpunit/Util/Xml/SnapshotNodeList.phpH(4 eH ^d4phpunit/Util/Xml/SuccessfulSchemaDetectionResult.php'(4 e'g%phpunit/Util/Xml/ValidationResult.php(4 exv:phpunit/Util/Xml/Validator.php(4 eV$phpunit/Util/XmlTestListRenderer.php +(4 e +8sbom.xml +/(4 e +/OOschema/8.5.xsdB(4 eB贅schema/9.2.xsdB(4 eB|lsebastian-cli-parser/LICENSE(4 eusebastian-cli-parser/Parser.php(4 ekM<sebastian-cli-parser/exceptions/AmbiguousOptionException.phpF(4 eFm\-sebastian-cli-parser/exceptions/Exception.phpu(4 euӫGsebastian-cli-parser/exceptions/OptionDoesNotAllowArgumentException.php_(4 e_|13Jsebastian-cli-parser/exceptions/RequiredOptionArgumentMissingException.phph(4 ehC:sebastian-cli-parser/exceptions/UnknownOptionException.php?(4 e?vD*sebastian-code-unit-reverse-lookup/LICENSE(4 e3G (-sebastian-code-unit-reverse-lookup/Wizard.php (4 e }Z['sebastian-code-unit/ClassMethodUnit.php(4 e@[!sebastian-code-unit/ClassUnit.php(4 eF sebastian-code-unit/CodeUnit.php~%(4 e~%D){*sebastian-code-unit/CodeUnitCollection.php(4 eJ2sebastian-code-unit/CodeUnitCollectionIterator.php;(4 e;Lʤ$sebastian-code-unit/FunctionUnit.php(4 e`+sebastian-code-unit/InterfaceMethodUnit.php(4 eǦ%sebastian-code-unit/InterfaceUnit.php(4 ecsebastian-code-unit/LICENSE (4 e psebastian-code-unit/Mapper.php-(4 e-#'sebastian-code-unit/TraitMethodUnit.php(4 eqz!sebastian-code-unit/TraitUnit.php(4 eXA,sebastian-code-unit/exceptions/Exception.phps(4 estg;sebastian-code-unit/exceptions/InvalidCodeUnitException.php(4 e6-3sebastian-code-unit/exceptions/NoTraitException.php(4 eQ36sebastian-code-unit/exceptions/ReflectionException.php(4 e$(sebastian-comparator/ArrayComparator.phpu(4 euEmhf#sebastian-comparator/Comparator.php(4 et*sebastian-comparator/ComparisonFailure.php (4 e %*sebastian-comparator/DOMNodeComparator.php (4 e 1i+sebastian-comparator/DateTimeComparator.php (4 e KQ)sebastian-comparator/DoubleComparator.php(4 e:n,sebastian-comparator/ExceptionComparator.php(4 e1 sebastian-comparator/Factory.php(4 e?Nsebastian-comparator/LICENSE (4 e =(-sebastian-comparator/MockObjectComparator.php(4 eI*sebastian-comparator/NumericComparator.php3 (4 e3 i{l)sebastian-comparator/ObjectComparator.phpX (4 eX ׌+sebastian-comparator/ResourceComparator.php(4 eJ)sebastian-comparator/ScalarComparator.php/ (4 e/ dF3sebastian-comparator/SplObjectStorageComparator.php(4 e?/'sebastian-comparator/TypeComparator.php(4 ecX\-sebastian-comparator/exceptions/Exception.phpv(4 evEᵤ4sebastian-comparator/exceptions/RuntimeException.php(4 eV'#sebastian-complexity/Calculator.phpe (4 ee (6.sebastian-complexity/Complexity/Complexity.phpQ(4 eQl8sebastian-complexity/Complexity/ComplexityCollection.php(4 eil@sebastian-complexity/Complexity/ComplexityCollectionIterator.php,(4 e,e,sebastian-complexity/Exception/Exception.phpv(4 ev73sebastian-complexity/Exception/RuntimeException.php(4 eCdWsebastian-complexity/LICENSE(4 e=ݤ=sebastian-complexity/Visitor/ComplexityCalculatingVisitor.php (4 e OGsebastian-complexity/Visitor/CyclomaticComplexityCalculatingVisitor.php (4 e 7Ysebastian-diff/Chunk.php_(4 e_vsebastian-diff/Diff.phpj(4 ejbXAsebastian-diff/Differ.php $(4 e $wkz3sebastian-diff/Exception/ConfigurationException.php=(4 e=1/Ff&sebastian-diff/Exception/Exception.phpj(4 ej05sebastian-diff/Exception/InvalidArgumentException.php(4 eqsebastian-diff/LICENSE (4 e a1sebastian-diff/Line.phpL(4 eL +q5sebastian-diff/LongestCommonSubsequenceCalculator.php(4 e}e7zDsebastian-diff/MemoryEfficientLongestCommonSubsequenceCalculator.php{ (4 e{ d^4sebastian-diff/Output/AbstractChunkOutputBuilder.php(4 e\t/sebastian-diff/Output/DiffOnlyOutputBuilder.phpz(4 ezc4sebastian-diff/Output/DiffOutputBuilderInterface.php(4 eV8sebastian-diff/Output/StrictUnifiedDiffOutputBuilder.php((4 e(kv2sebastian-diff/Output/UnifiedDiffOutputBuilder.php>(4 e>'q)sebastian-diff/Parser.php (4 e X{Bsebastian-diff/TimeEfficientLongestCommonSubsequenceCalculator.php0 (4 e0 B !sebastian-environment/Console.php(4 eP1Ťsebastian-environment/LICENSE(4 eFy٤)sebastian-environment/OperatingSystem.php(4 ē!sebastian-environment/Runtime.php(4 e4sebastian-exporter/Exporter.phpx$(4 ex$sebastian-exporter/LICENSE(4 e 5٤'sebastian-global-state/CodeExporter.php (4 e &sebastian-global-state/ExcludeList.php +(4 e +R{sebastian-global-state/LICENSE(4 eJ#sebastian-global-state/Restorer.php(4 e9}b#sebastian-global-state/Snapshot.php*(4 e*X%/sebastian-global-state/exceptions/Exception.phpy(4 eyJ6sebastian-global-state/exceptions/RuntimeException.php(4 e;#sebastian-lines-of-code/Counter.php(4 eH5/sebastian-lines-of-code/Exception/Exception.phpz(4 ez aV>sebastian-lines-of-code/Exception/IllogicalValuesException.php(4 eG<sebastian-lines-of-code/Exception/NegativeValueException.php(4 e +ڤ6sebastian-lines-of-code/Exception/RuntimeException.php(4 eKsebastian-lines-of-code/LICENSE(4 ebS~/sebastian-lines-of-code/LineCountingVisitor.php(4 e~A'sebastian-lines-of-code/LinesOfCode.php (4 e fӤ*sebastian-object-enumerator/Enumerator.php(4 ex})sebastian-object-enumerator/Exception.php(4 e}Ȥ8sebastian-object-enumerator/InvalidArgumentException.php(4 eâ(sebastian-object-reflector/Exception.php(4 eЬۤ7sebastian-object-reflector/InvalidArgumentException.php(4 e +M.sebastian-object-reflector/ObjectReflector.php(4 e_'sebastian-recursion-context/Context.phpB(4 eBapply($object, $property->getName(), function ($object) { return $this->recursiveCopy($object); }); + if ($filter instanceof ChainableFilter) { + continue; + } // If a filter matches, we stop processing this property return; } @@ -3021,6 +3045,28 @@ class PropertyException extends ReflectionException } filter = $filter; + } + public function apply($object, $property, $objectCopier) + { + $this->filter->apply($object, $property, $objectCopier); + } +} +attributeGroups[] = BuilderHelpers::normalizeAttribute($attribute); return $this; } + /** + * Sets the constant type. + * + * @param string|Node\Name|Identifier|Node\ComplexType $type + * + * @return $this + */ + public function setType($type) + { + $this->type = BuilderHelpers::normalizeType($type); + return $this; + } /** * Returns the built class node. * @@ -3784,7 +3844,7 @@ class ClassConst implements PhpParser\Builder */ public function getNode() : PhpParser\Node { - return new Stmt\ClassConst($this->constants, $this->flags, $this->attributes, $this->attributeGroups); + return new Stmt\ClassConst($this->constants, $this->flags, $this->attributes, $this->attributeGroups, $this->type); } } name, $this->value, $this->attributes, $this->attributeGroups); + return new Stmt\EnumCase($this->name, $this->value, $this->attributeGroups, $this->attributes); } } variadic = \true; return $this; } + /** + * Makes the (promoted) parameter public. + * + * @return $this The builder instance (for fluid interface) + */ + public function makePublic() + { + $this->flags = BuilderHelpers::addModifier($this->flags, Node\Stmt\Class_::MODIFIER_PUBLIC); + return $this; + } + /** + * Makes the (promoted) parameter protected. + * + * @return $this The builder instance (for fluid interface) + */ + public function makeProtected() + { + $this->flags = BuilderHelpers::addModifier($this->flags, Node\Stmt\Class_::MODIFIER_PROTECTED); + return $this; + } + /** + * Makes the (promoted) parameter private. + * + * @return $this The builder instance (for fluid interface) + */ + public function makePrivate() + { + $this->flags = BuilderHelpers::addModifier($this->flags, Node\Stmt\Class_::MODIFIER_PRIVATE); + return $this; + } + /** + * Makes the (promoted) parameter readonly. + * + * @return $this The builder instance (for fluid interface) + */ + public function makeReadonly() + { + $this->flags = BuilderHelpers::addModifier($this->flags, Node\Stmt\Class_::MODIFIER_READONLY); + return $this; + } /** * Adds an attribute group. * @@ -4602,7 +4703,7 @@ class Param implements PhpParser\Builder */ public function getNode() : Node { - return new Node\Param(new Node\Expr\Variable($this->name), $this->default, $this->type, $this->byRef, $this->variadic, [], 0, $this->attributeGroups); + return new Node\Param(new Node\Expr\Variable($this->name), $this->default, $this->type, $this->byRef, $this->variadic, [], $this->flags, $this->attributeGroups); } } attrGroups = $attrGroups; + $this->flags = $flags; $this->args = $args; $this->extends = $extends; $this->implements = $implements; @@ -6661,7 +6765,7 @@ class PrintableNewAnonClassNode extends Expr \assert($class instanceof Node\Stmt\Class_); // We don't assert that $class->name is null here, to allow consumers to assign unique names // to anonymous classes for their own purposes. We simplify ignore the name here. - return new self($class->attrGroups, $newNode->args, $class->extends, $class->implements, $class->stmts, $newNode->getAttributes()); + return new self($class->attrGroups, $class->flags, $newNode->args, $class->extends, $class->implements, $class->stmts, $newNode->getAttributes()); } public function getType() : string { @@ -6669,7 +6773,7 @@ class PrintableNewAnonClassNode extends Expr } public function getSubNodeNames() : array { - return ['attrGroups', 'args', 'extends', 'implements', 'stmts']; + return ['attrGroups', 'flags', 'args', 'extends', 'implements', 'stmts']; } } targetPhpVersion = $options['phpVersion'] ?? Emulative::PHP_8_1; + $this->targetPhpVersion = $options['phpVersion'] ?? Emulative::PHP_8_2; unset($options['phpVersion']); parent::__construct($options); - $emulators = [new FlexibleDocStringEmulator(), new FnTokenEmulator(), new MatchTokenEmulator(), new CoaleseEqualTokenEmulator(), new NumericLiteralSeparatorEmulator(), new NullsafeTokenEmulator(), new AttributeEmulator(), new EnumTokenEmulator(), new ReadonlyTokenEmulator(), new ExplicitOctalEmulator()]; + $emulators = [new FlexibleDocStringEmulator(), new FnTokenEmulator(), new MatchTokenEmulator(), new CoaleseEqualTokenEmulator(), new NumericLiteralSeparatorEmulator(), new NullsafeTokenEmulator(), new AttributeEmulator(), new EnumTokenEmulator(), new ReadonlyTokenEmulator(), new ExplicitOctalEmulator(), new ReadonlyFunctionTokenEmulator()]; // Collect emulators that are relevant for the PHP version we're running // and the PHP version we're targeting for emulation. foreach ($emulators as $emulator) { @@ -8163,6 +8269,39 @@ final class NumericLiteralSeparatorEmulator extends TokenEmulator declare (strict_types=1); namespace PHPUnit\PhpParser\Lexer\TokenEmulator; +use PHPUnit\PhpParser\Lexer\Emulative; +/* + * In PHP 8.1, "readonly(" was special cased in the lexer in order to support functions with + * name readonly. In PHP 8.2, this may conflict with readonly properties having a DNF type. For + * this reason, PHP 8.2 instead treats this as T_READONLY and then handles it specially in the + * parser. This emulator only exists to handle this special case, which is skipped by the + * PHP 8.1 ReadonlyTokenEmulator. + */ +class ReadonlyFunctionTokenEmulator extends KeywordEmulator +{ + public function getKeywordString() : string + { + return 'readonly'; + } + public function getKeywordToken() : int + { + return \T_READONLY; + } + public function getPhpVersion() : string + { + return Emulative::PHP_8_2; + } + public function reverseEmulate(string $code, array $tokens) : array + { + // Don't bother + return $tokens; + } +} + \true, 'parent' => \true, 'static' => \true]; /** @@ -11413,6 +11555,15 @@ class Name extends NodeAbstract { return ['parts']; } + /** + * Get parts of name (split by the namespace separator). + * + * @return string[] Parts of name + */ + public function getParts() : array + { + return $this->parts; + } /** * Gets the first part of the name, i.e. everything before the first namespace separator. * @@ -12424,26 +12575,30 @@ class ClassConst extends Node\Stmt public $flags; /** @var Node\Const_[] Constant declarations */ public $consts; - /** @var Node\AttributeGroup[] */ + /** @var Node\AttributeGroup[] PHP attribute groups */ public $attrGroups; + /** @var Node\Identifier|Node\Name|Node\ComplexType|null Type declaration */ + public $type; /** * Constructs a class const list node. * - * @param Node\Const_[] $consts Constant declarations - * @param int $flags Modifiers - * @param array $attributes Additional attributes - * @param Node\AttributeGroup[] $attrGroups PHP attribute groups + * @param Node\Const_[] $consts Constant declarations + * @param int $flags Modifiers + * @param array $attributes Additional attributes + * @param Node\AttributeGroup[] $attrGroups PHP attribute groups + * @param null|string|Node\Identifier|Node\Name|Node\ComplexType $type Type declaration */ - public function __construct(array $consts, int $flags = 0, array $attributes = [], array $attrGroups = []) + public function __construct(array $consts, int $flags = 0, array $attributes = [], array $attrGroups = [], $type = null) { $this->attributes = $attributes; $this->flags = $flags; $this->consts = $consts; $this->attrGroups = $attrGroups; + $this->type = \is_string($type) ? new Node\Identifier($type) : $type; } public function getSubNodeNames() : array { - return ['attrGroups', 'flags', 'consts']; + return ['attrGroups', 'flags', 'type', 'consts']; } /** * Whether constant is explicitly or implicitly public. @@ -15502,7 +15657,7 @@ class NameResolver extends NodeVisitorAbstract } return null; } - private function addAlias(Stmt\UseUse $use, $type, Name $prefix = null) + private function addAlias(Stmt\UseUse $use, int $type, Name $prefix = null) { // Add prefix for group uses $name = $prefix ? Name::concat($prefix, $use->name) : $use->name; @@ -15790,26 +15945,26 @@ use PHPUnit\PhpParser\Node\Stmt; class Php5 extends \PHPUnit\PhpParser\ParserAbstract { protected $tokenToSymbolMapSize = 396; - protected $actionTableSize = 1093; - protected $gotoTableSize = 643; + protected $actionTableSize = 1099; + protected $gotoTableSize = 640; protected $invalidSymbol = 168; protected $errorSymbol = 1; protected $defaultAction = -32766; protected $unexpectedTokenRule = 32767; protected $YY2TBLSTATE = 415; - protected $numNonLeafStates = 662; - protected $symbolToName = array("EOF", "error", "T_THROW", "T_INCLUDE", "T_INCLUDE_ONCE", "T_EVAL", "T_REQUIRE", "T_REQUIRE_ONCE", "','", "T_LOGICAL_OR", "T_LOGICAL_XOR", "T_LOGICAL_AND", "T_PRINT", "T_YIELD", "T_DOUBLE_ARROW", "T_YIELD_FROM", "'='", "T_PLUS_EQUAL", "T_MINUS_EQUAL", "T_MUL_EQUAL", "T_DIV_EQUAL", "T_CONCAT_EQUAL", "T_MOD_EQUAL", "T_AND_EQUAL", "T_OR_EQUAL", "T_XOR_EQUAL", "T_SL_EQUAL", "T_SR_EQUAL", "T_POW_EQUAL", "T_COALESCE_EQUAL", "'?'", "':'", "T_COALESCE", "T_BOOLEAN_OR", "T_BOOLEAN_AND", "'|'", "'^'", "T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG", "T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG", "T_IS_EQUAL", "T_IS_NOT_EQUAL", "T_IS_IDENTICAL", "T_IS_NOT_IDENTICAL", "T_SPACESHIP", "'<'", "T_IS_SMALLER_OR_EQUAL", "'>'", "T_IS_GREATER_OR_EQUAL", "T_SL", "T_SR", "'+'", "'-'", "'.'", "'*'", "'/'", "'%'", "'!'", "T_INSTANCEOF", "'~'", "T_INC", "T_DEC", "T_INT_CAST", "T_DOUBLE_CAST", "T_STRING_CAST", "T_ARRAY_CAST", "T_OBJECT_CAST", "T_BOOL_CAST", "T_UNSET_CAST", "'@'", "T_POW", "'['", "T_NEW", "T_CLONE", "T_EXIT", "T_IF", "T_ELSEIF", "T_ELSE", "T_ENDIF", "T_LNUMBER", "T_DNUMBER", "T_STRING", "T_STRING_VARNAME", "T_VARIABLE", "T_NUM_STRING", "T_INLINE_HTML", "T_ENCAPSED_AND_WHITESPACE", "T_CONSTANT_ENCAPSED_STRING", "T_ECHO", "T_DO", "T_WHILE", "T_ENDWHILE", "T_FOR", "T_ENDFOR", "T_FOREACH", "T_ENDFOREACH", "T_DECLARE", "T_ENDDECLARE", "T_AS", "T_SWITCH", "T_MATCH", "T_ENDSWITCH", "T_CASE", "T_DEFAULT", "T_BREAK", "T_CONTINUE", "T_GOTO", "T_FUNCTION", "T_FN", "T_CONST", "T_RETURN", "T_TRY", "T_CATCH", "T_FINALLY", "T_USE", "T_INSTEADOF", "T_GLOBAL", "T_STATIC", "T_ABSTRACT", "T_FINAL", "T_PRIVATE", "T_PROTECTED", "T_PUBLIC", "T_VAR", "T_UNSET", "T_ISSET", "T_EMPTY", "T_HALT_COMPILER", "T_CLASS", "T_TRAIT", "T_INTERFACE", "T_EXTENDS", "T_IMPLEMENTS", "T_OBJECT_OPERATOR", "T_LIST", "T_ARRAY", "T_CALLABLE", "T_CLASS_C", "T_TRAIT_C", "T_METHOD_C", "T_FUNC_C", "T_LINE", "T_FILE", "T_START_HEREDOC", "T_END_HEREDOC", "T_DOLLAR_OPEN_CURLY_BRACES", "T_CURLY_OPEN", "T_PAAMAYIM_NEKUDOTAYIM", "T_NAMESPACE", "T_NS_C", "T_DIR", "T_NS_SEPARATOR", "T_ELLIPSIS", "T_NAME_FULLY_QUALIFIED", "T_NAME_QUALIFIED", "T_NAME_RELATIVE", "';'", "'{'", "'}'", "'('", "')'", "'\$'", "'`'", "']'", "'\"'", "T_READONLY", "T_ENUM", "T_NULLSAFE_OBJECT_OPERATOR", "T_ATTRIBUTE"); - protected $tokenToSymbol = array(0, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 56, 163, 168, 160, 55, 168, 168, 158, 159, 53, 50, 8, 51, 52, 54, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 31, 155, 44, 16, 46, 30, 68, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 70, 168, 162, 36, 168, 161, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 156, 35, 157, 58, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 32, 33, 34, 37, 38, 39, 40, 41, 42, 43, 45, 47, 48, 49, 57, 59, 60, 61, 62, 63, 64, 65, 66, 67, 69, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 164, 122, 123, 124, 125, 126, 127, 128, 129, 165, 130, 131, 132, 166, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 167); - protected $action = array(699, 669, 670, 671, 672, 673, 286, 674, 675, 676, 712, 713, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 0, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, -32766, -32766, -32766, -32766, -32766, -32766, -32766, -32766, -32766, -32767, -32767, -32767, -32767, 245, 246, 242, 243, 244, -32766, -32766, 677, -32766, 750, -32766, -32766, -32766, -32766, -32766, -32766, -32766, 1224, 245, 246, 1225, 678, 679, 680, 681, 682, 683, 684, -32766, 48, 746, -32766, -32766, -32766, -32766, -32766, -32766, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 715, 738, 716, 717, 718, 719, 707, 708, 709, 737, 710, 711, 696, 697, 698, 700, 701, 702, 740, 741, 742, 743, 744, 745, 703, 704, 705, 706, 736, 727, 725, 726, 722, 723, 751, 714, 720, 721, 728, 729, 731, 730, 732, 733, 55, 56, 425, 57, 58, 724, 735, 734, 1073, 59, 60, -224, 61, -32766, -32766, -32766, -32766, -32766, -32766, -32766, -32766, -32766, -32766, 121, -32767, -32767, -32767, -32767, 29, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 1043, 766, 1071, 767, 580, 62, 63, -32766, -32766, -32766, -32766, 64, 516, 65, 294, 295, 66, 67, 68, 69, 70, 71, 72, 73, 822, 25, 302, 74, 418, 981, 983, 1043, 1181, 1095, 1096, 1073, 748, 754, 1075, 1074, 1076, 469, -32766, -32766, -32766, 337, 823, 54, -32767, -32767, -32767, -32767, 98, 99, 100, 101, 102, 220, 221, 222, 78, 361, 1107, -32766, 341, -32766, -32766, -32766, -32766, -32766, 1107, 492, 949, 950, 951, 948, 947, 946, 207, 477, 478, 949, 950, 951, 948, 947, 946, 1043, 479, 480, 52, 1101, 1102, 1103, 1104, 1098, 1099, 319, 872, 668, 667, 27, -511, 1105, 1100, -32766, 130, 1075, 1074, 1076, 345, 668, 667, 41, 126, 341, 334, 369, 336, 426, -128, -128, -128, 896, 897, 468, 220, 221, 222, 811, 1195, 619, 40, 21, 427, -128, 470, -128, 471, -128, 472, -128, 802, 428, -4, 823, 54, 207, 33, 34, 429, 360, 317, 28, 35, 473, -32766, -32766, -32766, 211, 356, 357, 474, 475, -32766, -32766, -32766, 754, 476, 49, 313, 794, 843, 430, 431, 289, 125, -32766, 813, -32766, -32766, -32766, -32766, -32766, -32766, -32766, -32767, -32767, -32767, -32767, -32767, -32766, -32766, -32766, 769, 103, 104, 105, 327, 307, 825, 633, -128, 1075, 1074, 1076, 221, 222, 927, 748, 1146, 106, -32766, 129, -32766, -32766, -32766, -32766, 426, 823, 54, 902, 873, 302, 468, 75, 207, 359, 811, 668, 667, 40, 21, 427, 754, 470, 754, 471, 423, 472, 1043, 127, 428, 435, 1043, 341, 1043, 33, 34, 429, 360, 1181, 415, 35, 473, 122, 10, 315, 128, 356, 357, 474, 475, -32766, -32766, -32766, 768, 476, 668, 667, 758, 843, 430, 431, 754, 1043, 1147, -32766, -32766, -32766, 754, 419, 342, 1215, -32766, 131, -32766, -32766, -32766, 341, 363, 346, 426, 823, 54, 100, 101, 102, 468, 825, 633, -4, 811, 442, 903, 40, 21, 427, 754, 470, 435, 471, 341, 472, 341, 766, 428, 767, -209, -209, -209, 33, 34, 429, 360, 479, 1196, 35, 473, 345, -32766, -32766, -32766, 356, 357, 474, 475, 220, 221, 222, 421, 476, 32, 297, 794, 843, 430, 431, 754, 754, 435, -32766, 341, -32766, -32766, 9, 300, 51, 207, 249, 324, 753, 120, 220, 221, 222, 426, 30, 247, 941, 422, 424, 468, 825, 633, -209, 811, 1043, 1061, 40, 21, 427, 129, 470, 207, 471, 341, 472, 804, 20, 428, 124, -208, -208, -208, 33, 34, 429, 360, 479, 212, 35, 473, 923, -259, 823, 54, 356, 357, 474, 475, -32766, -32766, -32766, 1043, 476, 213, 806, 794, 843, 430, 431, -32766, -32766, 435, 435, 341, 341, 443, 79, 80, 81, -32766, 668, 667, 636, 344, 808, 668, 667, 239, 240, 241, 123, 214, 538, 250, 825, 633, -208, 36, 251, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 252, 307, 426, 220, 221, 222, 823, 54, 468, -32766, 222, 765, 811, 106, 134, 40, 21, 427, 571, 470, 207, 471, 445, 472, 207, -32766, 428, 896, 897, 207, 307, 33, 34, 429, 245, 246, 637, 35, 473, 452, 22, 809, 922, 356, 357, 457, 588, 135, 374, 595, 596, 476, -228, 759, 639, 938, 653, 926, 661, -86, 823, 54, 314, 644, 647, 821, 133, 836, 43, 106, 603, 44, 45, 46, 47, 748, 50, 53, 132, 426, 302, -32766, 520, 825, 633, 468, -84, 607, 577, 811, 641, 362, 40, 21, 427, -278, 470, 754, 471, 954, 472, 441, 627, 428, 823, 54, 574, 844, 33, 34, 429, 11, 615, 845, 35, 473, 444, 461, 285, -511, 356, 357, 592, -419, 593, 1106, 1153, -410, 476, 368, 838, 38, 658, 426, 645, 795, 1052, 0, 325, 468, 0, -32766, 0, 811, 0, 0, 40, 21, 427, 0, 470, 0, 471, 0, 472, 0, 322, 428, 823, 54, 825, 633, 33, 34, 429, 0, 326, 0, 35, 473, 323, 0, 316, 318, 356, 357, -512, 426, 0, 753, 531, 0, 476, 468, 6, 0, 0, 811, 650, 7, 40, 21, 427, 12, 470, 14, 471, 373, 472, -420, 562, 428, 823, 54, 78, -225, 33, 34, 429, 39, 656, 657, 35, 473, 859, 633, 764, 812, 356, 357, 820, 799, 814, 875, 866, 867, 476, 797, 860, 857, 855, 426, 933, 934, 931, 819, 803, 468, 805, 807, 810, 811, 930, 762, 40, 21, 427, 763, 470, 932, 471, 335, 472, 358, 634, 428, 638, 640, 825, 633, 33, 34, 429, 642, 643, 646, 35, 473, 648, 649, 651, 652, 356, 357, 635, 426, 1221, 1223, 761, 842, 476, 468, 248, 760, 841, 811, 1222, 840, 40, 21, 427, 1057, 470, 830, 471, 1045, 472, 839, 1046, 428, 828, 215, 216, 939, 33, 34, 429, 217, 864, 218, 35, 473, 825, 633, 24, 865, 356, 357, 456, 1220, 1189, 209, 1187, 1172, 476, 1185, 215, 216, 1086, 1095, 1096, 914, 217, 1193, 218, 1183, -224, 1097, 26, 31, 37, 42, 76, 77, 210, 288, 209, 292, 293, 308, 309, 310, 311, 339, 1095, 1096, 825, 633, 355, 291, 416, 1152, 1097, 16, 17, 18, 393, 453, 460, 462, 466, 552, 624, 1048, 1051, 904, 1111, 1047, 1023, 563, 1022, 1088, 0, 0, -429, 558, 1041, 1101, 1102, 1103, 1104, 1098, 1099, 398, 1054, 1053, 1056, 1055, 1070, 1105, 1100, 1186, 1171, 1167, 1184, 1085, 1218, 1112, 1166, 219, 558, 599, 1101, 1102, 1103, 1104, 1098, 1099, 398, 0, 0, 0, 0, 0, 1105, 1100, 0, 0, 0, 0, 0, 0, 0, 0, 219); - protected $actionCheck = array(2, 3, 4, 5, 6, 7, 14, 9, 10, 11, 12, 13, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 0, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 9, 10, 11, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 69, 70, 53, 54, 55, 9, 10, 57, 30, 80, 32, 33, 34, 35, 36, 37, 38, 80, 69, 70, 83, 71, 72, 73, 74, 75, 76, 77, 9, 70, 80, 33, 34, 35, 36, 37, 38, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 153, 133, 134, 135, 136, 137, 138, 139, 140, 141, 3, 4, 5, 6, 7, 147, 148, 149, 80, 12, 13, 159, 15, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 156, 44, 45, 46, 47, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 13, 106, 116, 108, 85, 50, 51, 33, 34, 35, 36, 56, 85, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 1, 70, 71, 72, 73, 59, 60, 13, 82, 78, 79, 80, 80, 82, 152, 153, 154, 86, 9, 10, 11, 8, 1, 2, 44, 45, 46, 47, 48, 49, 50, 51, 52, 9, 10, 11, 156, 106, 143, 30, 160, 32, 33, 34, 35, 36, 143, 116, 116, 117, 118, 119, 120, 121, 30, 124, 125, 116, 117, 118, 119, 120, 121, 13, 133, 134, 70, 136, 137, 138, 139, 140, 141, 142, 31, 37, 38, 8, 132, 148, 149, 116, 156, 152, 153, 154, 160, 37, 38, 158, 8, 160, 161, 8, 163, 74, 75, 76, 77, 134, 135, 80, 9, 10, 11, 84, 1, 80, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 155, 98, 0, 1, 2, 30, 103, 104, 105, 106, 132, 8, 109, 110, 9, 10, 11, 8, 115, 116, 117, 118, 9, 10, 11, 82, 123, 70, 8, 126, 127, 128, 129, 8, 156, 30, 155, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 9, 10, 11, 157, 53, 54, 55, 8, 57, 155, 156, 157, 152, 153, 154, 10, 11, 157, 80, 162, 69, 30, 151, 32, 33, 34, 35, 74, 1, 2, 159, 155, 71, 80, 151, 30, 8, 84, 37, 38, 87, 88, 89, 82, 91, 82, 93, 8, 95, 13, 156, 98, 158, 13, 160, 13, 103, 104, 105, 106, 82, 108, 109, 110, 156, 8, 113, 31, 115, 116, 117, 118, 9, 10, 11, 157, 123, 37, 38, 126, 127, 128, 129, 82, 13, 159, 33, 34, 35, 82, 127, 8, 85, 30, 156, 32, 33, 34, 160, 8, 147, 74, 1, 2, 50, 51, 52, 80, 155, 156, 157, 84, 31, 159, 87, 88, 89, 82, 91, 158, 93, 160, 95, 160, 106, 98, 108, 100, 101, 102, 103, 104, 105, 106, 133, 159, 109, 110, 160, 9, 10, 11, 115, 116, 117, 118, 9, 10, 11, 8, 123, 144, 145, 126, 127, 128, 129, 82, 82, 158, 30, 160, 32, 33, 108, 8, 70, 30, 31, 113, 152, 16, 9, 10, 11, 74, 14, 14, 122, 8, 8, 80, 155, 156, 157, 84, 13, 159, 87, 88, 89, 151, 91, 30, 93, 160, 95, 155, 159, 98, 14, 100, 101, 102, 103, 104, 105, 106, 133, 16, 109, 110, 155, 157, 1, 2, 115, 116, 117, 118, 9, 10, 11, 13, 123, 16, 155, 126, 127, 128, 129, 33, 34, 158, 158, 160, 160, 156, 9, 10, 11, 30, 37, 38, 31, 70, 155, 37, 38, 50, 51, 52, 156, 16, 81, 16, 155, 156, 157, 30, 16, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 16, 57, 74, 9, 10, 11, 1, 2, 80, 116, 11, 155, 84, 69, 156, 87, 88, 89, 160, 91, 30, 93, 132, 95, 30, 33, 98, 134, 135, 30, 57, 103, 104, 105, 69, 70, 31, 109, 110, 75, 76, 155, 155, 115, 116, 75, 76, 101, 102, 111, 112, 123, 159, 155, 156, 155, 156, 155, 156, 31, 1, 2, 31, 31, 31, 31, 31, 38, 70, 69, 77, 70, 70, 70, 70, 80, 70, 70, 70, 74, 71, 85, 85, 155, 156, 80, 97, 96, 100, 84, 31, 106, 87, 88, 89, 82, 91, 82, 93, 82, 95, 89, 92, 98, 1, 2, 90, 127, 103, 104, 105, 97, 94, 127, 109, 110, 97, 97, 97, 132, 115, 116, 100, 146, 113, 143, 143, 146, 123, 106, 151, 155, 157, 74, 31, 157, 162, -1, 114, 80, -1, 116, -1, 84, -1, -1, 87, 88, 89, -1, 91, -1, 93, -1, 95, -1, 130, 98, 1, 2, 155, 156, 103, 104, 105, -1, 130, -1, 109, 110, 131, -1, 132, 132, 115, 116, 132, 74, -1, 152, 150, -1, 123, 80, 146, -1, -1, 84, 31, 146, 87, 88, 89, 146, 91, 146, 93, 146, 95, 146, 150, 98, 1, 2, 156, 159, 103, 104, 105, 155, 155, 155, 109, 110, 155, 156, 155, 155, 115, 116, 155, 155, 155, 155, 155, 155, 123, 155, 155, 155, 155, 74, 155, 155, 155, 155, 155, 80, 155, 155, 155, 84, 155, 155, 87, 88, 89, 155, 91, 155, 93, 156, 95, 156, 156, 98, 156, 156, 155, 156, 103, 104, 105, 156, 156, 156, 109, 110, 156, 156, 156, 156, 115, 116, 156, 74, 157, 157, 157, 157, 123, 80, 31, 157, 157, 84, 157, 157, 87, 88, 89, 157, 91, 157, 93, 157, 95, 157, 157, 98, 157, 50, 51, 157, 103, 104, 105, 56, 157, 58, 109, 110, 155, 156, 158, 157, 115, 116, 157, 157, 157, 70, 157, 157, 123, 157, 50, 51, 157, 78, 79, 157, 56, 157, 58, 157, 159, 86, 158, 158, 158, 158, 158, 158, 158, 158, 70, 158, 158, 158, 158, 158, 158, 158, 78, 79, 155, 156, 158, 160, 158, 163, 86, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, -1, -1, 161, 134, 161, 136, 137, 138, 139, 140, 141, 142, 162, 162, 162, 162, 162, 148, 149, 162, 162, 162, 162, 162, 162, 162, 162, 158, 134, 162, 136, 137, 138, 139, 140, 141, 142, -1, -1, -1, -1, -1, 148, 149, -1, -1, -1, -1, -1, -1, -1, -1, 158); - protected $actionBase = array(0, 227, 326, 400, 474, 233, 132, 132, 752, -2, -2, 138, -2, -2, -2, 663, 761, 815, 761, 586, 717, 859, 859, 859, 244, 256, 256, 256, 413, 583, 583, 880, 546, 169, 415, 444, 409, 200, 200, 200, 200, 137, 137, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 249, 205, 738, 559, 535, 739, 741, 742, 876, 679, 877, 820, 821, 693, 823, 824, 826, 829, 832, 819, 834, 907, 836, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 67, 536, 299, 510, 230, 44, 652, 652, 652, 652, 652, 652, 652, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 378, 584, 584, 584, 657, 909, 648, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 503, -21, -21, 436, 650, 364, 571, 215, 426, 156, 26, 26, 329, 329, 329, 329, 329, 46, 46, 5, 5, 5, 5, 152, 186, 186, 186, 186, 120, 120, 120, 120, 374, 374, 429, 448, 448, 334, 267, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 336, 427, 427, 572, 572, 408, 551, 551, 551, 551, 671, 171, 171, 391, 311, 311, 311, 109, 641, 856, 68, 68, 68, 68, 68, 68, 324, 324, 324, -3, -3, -3, 655, 77, 380, 77, 380, 683, 685, 86, 685, 654, -15, 516, 776, 281, 646, 809, 680, 816, 560, 711, 202, 578, 857, 643, -23, 578, 578, 578, 578, 857, 622, 628, 596, -23, 578, -23, 639, 454, 849, 351, 249, 558, 469, 631, 743, 514, 688, 746, 464, 544, 548, 556, 7, 412, 708, 750, 878, 879, 349, 702, 631, 631, 631, 327, 101, 7, -8, 623, 623, 623, 623, 219, 623, 623, 623, 623, 291, 430, 545, 401, 745, 653, 653, 675, 839, 814, 814, 653, 673, 653, 675, 841, 841, 841, 841, 653, 653, 653, 653, 814, 814, 667, 814, 275, 684, 694, 694, 841, 713, 714, 653, 653, 697, 814, 814, 814, 697, 687, 841, 669, 637, 333, 814, 841, 689, 673, 689, 653, 669, 689, 673, 673, 689, 22, 686, 656, 840, 842, 860, 756, 638, 644, 847, 848, 843, 845, 838, 692, 719, 720, 528, 659, 660, 661, 662, 696, 664, 698, 643, 658, 658, 658, 645, 701, 645, 658, 658, 658, 658, 658, 658, 658, 658, 632, 635, 709, 699, 670, 723, 566, 582, 758, 640, 636, 872, 865, 881, 883, 849, 870, 645, 890, 634, 288, 610, 850, 633, 753, 645, 851, 645, 759, 645, 873, 777, 666, 778, 779, 658, 874, 891, 892, 893, 894, 897, 898, 899, 900, 665, 901, 724, 674, 866, 344, 844, 639, 705, 677, 755, 725, 780, 372, 902, 784, 645, 645, 765, 706, 645, 766, 726, 712, 862, 727, 867, 903, 640, 678, 868, 645, 681, 785, 904, 372, 690, 651, 704, 649, 728, 858, 875, 853, 767, 612, 617, 787, 788, 792, 691, 730, 863, 864, 835, 731, 770, 642, 771, 676, 794, 772, 852, 732, 796, 798, 871, 647, 707, 682, 672, 668, 773, 799, 869, 733, 735, 736, 801, 737, 804, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 137, 137, 137, 137, -2, -2, -2, -2, 0, 0, -2, 0, 0, 0, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 0, 0, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 602, -21, -21, -21, -21, 602, -21, -21, -21, -21, -21, -21, -21, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, -21, 602, 602, 602, -21, 68, -21, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 602, 0, 0, 602, -21, 602, -21, 602, -21, -21, 602, 602, 602, 602, 602, 602, 602, -21, -21, -21, -21, -21, -21, 0, 324, 324, 324, 324, -21, -21, -21, -21, 68, 68, 147, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 324, 324, -3, -3, 68, 68, 68, 68, 68, 147, 68, 68, -23, 673, 673, 673, 380, 380, 380, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 380, -23, 0, -23, 0, 68, -23, 673, -23, 380, 673, 673, -23, 814, 604, 604, 604, 604, 372, 7, 0, 0, 673, 673, 0, 0, 0, 0, 0, 673, 0, 0, 0, 0, 0, 0, 814, 0, 653, 0, 0, 0, 0, 658, 288, 0, 677, 456, 0, 0, 0, 0, 0, 0, 677, 456, 530, 530, 0, 665, 658, 658, 658, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 372); - protected $actionDefault = array(3, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 540, 540, 495, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 297, 297, 297, 32767, 32767, 32767, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 32767, 32767, 32767, 32767, 32767, 32767, 381, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 387, 545, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 362, 363, 365, 366, 296, 548, 529, 245, 388, 544, 295, 247, 325, 499, 32767, 32767, 32767, 327, 122, 256, 201, 498, 125, 294, 232, 380, 382, 326, 301, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 300, 454, 359, 358, 357, 456, 32767, 455, 492, 492, 495, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 323, 483, 482, 324, 452, 328, 453, 331, 457, 460, 329, 330, 347, 348, 345, 346, 349, 458, 459, 476, 477, 474, 475, 299, 350, 351, 352, 353, 478, 479, 480, 481, 32767, 32767, 280, 539, 539, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 338, 339, 467, 468, 32767, 236, 236, 236, 236, 281, 236, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 333, 334, 332, 462, 463, 461, 428, 32767, 32767, 32767, 430, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 500, 32767, 32767, 32767, 32767, 32767, 513, 417, 171, 32767, 409, 32767, 171, 171, 171, 171, 32767, 220, 222, 167, 32767, 171, 32767, 486, 32767, 32767, 32767, 32767, 32767, 518, 343, 32767, 32767, 116, 32767, 32767, 32767, 555, 32767, 513, 32767, 116, 32767, 32767, 32767, 32767, 356, 335, 336, 337, 32767, 32767, 517, 511, 470, 471, 472, 473, 32767, 464, 465, 466, 469, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 425, 431, 431, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 516, 515, 32767, 410, 494, 186, 184, 184, 32767, 206, 206, 32767, 32767, 188, 487, 506, 32767, 188, 173, 32767, 398, 175, 494, 32767, 32767, 238, 32767, 238, 32767, 398, 238, 32767, 32767, 238, 32767, 411, 435, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 377, 378, 489, 502, 32767, 503, 32767, 409, 341, 342, 344, 320, 32767, 322, 367, 368, 369, 370, 371, 372, 373, 375, 32767, 415, 32767, 418, 32767, 32767, 32767, 255, 32767, 553, 32767, 32767, 304, 553, 32767, 32767, 32767, 547, 32767, 32767, 298, 32767, 32767, 32767, 32767, 251, 32767, 169, 32767, 537, 32767, 554, 32767, 511, 32767, 340, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 512, 32767, 32767, 32767, 32767, 227, 32767, 448, 32767, 116, 32767, 32767, 32767, 187, 32767, 32767, 302, 246, 32767, 32767, 546, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 114, 32767, 170, 32767, 32767, 32767, 189, 32767, 32767, 511, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 293, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 511, 32767, 32767, 231, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 411, 32767, 274, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 127, 127, 3, 127, 127, 258, 3, 258, 127, 258, 258, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 214, 217, 206, 206, 164, 127, 127, 266); - protected $goto = array(166, 140, 140, 140, 166, 187, 168, 144, 147, 141, 142, 143, 149, 163, 163, 163, 163, 144, 144, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 138, 159, 160, 161, 162, 184, 139, 185, 493, 494, 377, 495, 499, 500, 501, 502, 503, 504, 505, 506, 967, 164, 145, 146, 148, 171, 176, 186, 203, 253, 256, 258, 260, 263, 264, 265, 266, 267, 268, 269, 277, 278, 279, 280, 303, 304, 328, 329, 330, 394, 395, 396, 542, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 150, 151, 152, 167, 153, 169, 154, 204, 170, 155, 156, 157, 205, 158, 136, 620, 560, 756, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 1108, 628, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 757, 888, 888, 508, 1200, 1200, 400, 606, 508, 536, 536, 568, 532, 534, 534, 496, 498, 524, 540, 569, 572, 583, 590, 852, 852, 852, 852, 847, 853, 174, 585, 519, 600, 601, 177, 178, 179, 401, 402, 403, 404, 173, 202, 206, 208, 257, 259, 261, 262, 270, 271, 272, 273, 274, 275, 281, 282, 283, 284, 305, 306, 331, 332, 333, 406, 407, 408, 409, 175, 180, 254, 255, 181, 182, 183, 497, 497, 785, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 509, 578, 582, 626, 749, 509, 544, 545, 546, 547, 548, 549, 550, 551, 553, 586, 338, 559, 321, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 530, 349, 655, 555, 587, 352, 414, 591, 575, 604, 885, 611, 612, 881, 616, 617, 623, 625, 630, 632, 298, 296, 296, 296, 298, 290, 299, 944, 610, 816, 1170, 613, 436, 436, 375, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 1072, 1084, 1083, 945, 1065, 1072, 895, 895, 895, 895, 1178, 895, 895, 1212, 1212, 1178, 388, 858, 561, 755, 1072, 1072, 1072, 1072, 1072, 1072, 3, 4, 384, 384, 384, 1212, 874, 856, 854, 856, 654, 465, 511, 883, 878, 1089, 541, 384, 537, 384, 567, 384, 1026, 19, 15, 371, 384, 1226, 510, 1204, 1192, 1192, 1192, 510, 906, 372, 522, 533, 554, 912, 514, 1068, 1069, 13, 1065, 378, 912, 1158, 594, 23, 965, 386, 386, 386, 602, 1066, 1169, 1066, 937, 447, 449, 631, 752, 1177, 1067, 1109, 614, 935, 1177, 605, 1197, 391, 1211, 1211, 543, 892, 386, 1194, 1194, 1194, 399, 518, 1016, 901, 389, 771, 529, 752, 340, 752, 1211, 518, 518, 385, 781, 1214, 770, 772, 1063, 910, 774, 1058, 1176, 659, 953, 514, 782, 862, 915, 450, 573, 1155, 0, 463, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 513, 528, 0, 0, 0, 0, 513, 0, 528, 0, 350, 351, 0, 609, 512, 515, 438, 439, 1064, 618, 0, 0, 0, 0, 0, 0, 0, 0, 0, 779, 1219, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 777, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 523, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 301, 301); - protected $gotoCheck = array(43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 57, 68, 15, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 126, 9, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 16, 76, 76, 68, 76, 76, 51, 51, 68, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 68, 68, 68, 68, 68, 68, 27, 66, 101, 66, 66, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 117, 117, 29, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 61, 61, 61, 6, 117, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 125, 57, 125, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 32, 71, 32, 32, 69, 69, 69, 32, 40, 40, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 5, 5, 5, 5, 5, 5, 5, 97, 62, 50, 81, 62, 57, 57, 62, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 124, 124, 97, 81, 57, 57, 57, 57, 57, 118, 57, 57, 142, 142, 118, 12, 33, 12, 14, 57, 57, 57, 57, 57, 57, 30, 30, 13, 13, 13, 142, 14, 14, 14, 14, 14, 57, 14, 14, 14, 34, 2, 13, 109, 13, 2, 13, 34, 34, 34, 34, 13, 13, 122, 140, 9, 9, 9, 122, 83, 58, 58, 58, 34, 13, 13, 81, 81, 58, 81, 46, 13, 131, 127, 34, 101, 123, 123, 123, 34, 81, 81, 81, 8, 8, 8, 8, 11, 119, 81, 8, 8, 8, 119, 49, 138, 48, 141, 141, 47, 78, 123, 119, 119, 119, 123, 47, 102, 80, 17, 23, 9, 11, 18, 11, 141, 47, 47, 11, 23, 141, 23, 24, 115, 84, 25, 113, 119, 73, 99, 13, 26, 70, 85, 64, 65, 130, -1, 108, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 9, 9, -1, -1, -1, -1, 9, -1, 9, -1, 71, 71, -1, 13, 9, 9, 9, 9, 13, 13, -1, -1, -1, -1, -1, -1, -1, -1, -1, 9, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 101, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5, 5); - protected $gotoBase = array(0, 0, -184, 0, 0, 356, 290, 0, 488, 149, 0, 182, 85, 118, 426, 112, 203, 179, 208, 0, 0, 0, 0, 162, 190, 198, 120, 27, 0, 272, -224, 0, -274, 406, 32, 0, 0, 0, 0, 0, 330, 0, 0, -24, 0, 0, 440, 485, 213, 218, 371, -74, 0, 0, 0, 0, 0, 107, 110, 0, 0, -11, -72, 0, 104, 95, -405, 0, -94, 41, 119, -82, 0, 164, 0, 0, -79, 0, 197, 0, 204, 43, 0, 441, 171, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 115, 0, 195, 210, 0, 0, 0, 0, 0, 86, 427, 259, 0, 0, 116, 0, 174, 0, -5, 117, 196, 0, 0, 161, 170, 93, -21, -48, 273, 0, 0, 91, 271, 0, 0, 0, 0, 0, 0, 216, 0, 437, 187, 102, 0, 0); - protected $gotoDefault = array(-32768, 467, 663, 2, 664, 834, 739, 747, 597, 481, 629, 581, 380, 1188, 791, 792, 793, 381, 367, 482, 379, 410, 405, 780, 773, 775, 783, 172, 411, 786, 1, 788, 517, 824, 1017, 364, 796, 365, 589, 798, 526, 800, 801, 137, 382, 383, 527, 483, 390, 576, 815, 276, 387, 817, 366, 818, 827, 370, 464, 454, 459, 556, 608, 432, 446, 570, 564, 535, 1081, 565, 861, 348, 869, 660, 877, 880, 484, 557, 891, 451, 899, 1094, 397, 905, 911, 916, 287, 919, 417, 412, 584, 924, 925, 5, 929, 621, 622, 8, 312, 952, 598, 966, 420, 1036, 1038, 485, 486, 521, 458, 507, 525, 487, 1059, 440, 413, 1062, 488, 489, 433, 434, 1078, 354, 1163, 353, 448, 320, 1150, 579, 1113, 455, 1203, 1159, 347, 490, 491, 376, 1182, 392, 1198, 437, 1205, 1213, 343, 539, 566); - protected $ruleToNonTerminal = array(0, 1, 3, 3, 2, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 8, 8, 9, 10, 11, 11, 12, 12, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 18, 18, 19, 19, 21, 21, 17, 17, 22, 22, 23, 23, 24, 24, 25, 25, 20, 20, 26, 28, 28, 29, 30, 30, 32, 31, 31, 31, 31, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 14, 14, 54, 54, 56, 55, 55, 48, 48, 58, 58, 59, 59, 60, 60, 15, 16, 16, 16, 63, 63, 63, 64, 64, 67, 67, 65, 65, 69, 69, 41, 41, 50, 50, 53, 53, 53, 52, 52, 70, 42, 42, 42, 42, 71, 71, 72, 72, 73, 73, 39, 39, 35, 35, 74, 37, 37, 75, 36, 36, 38, 38, 49, 49, 49, 61, 61, 77, 77, 78, 78, 80, 80, 80, 79, 79, 62, 62, 81, 81, 81, 82, 82, 83, 83, 83, 44, 44, 84, 84, 84, 45, 45, 85, 85, 86, 86, 66, 87, 87, 87, 87, 92, 92, 93, 93, 94, 94, 94, 94, 94, 95, 96, 96, 91, 91, 88, 88, 90, 90, 98, 98, 97, 97, 97, 97, 97, 97, 89, 89, 100, 99, 99, 46, 46, 40, 40, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 34, 34, 47, 47, 105, 105, 106, 106, 106, 106, 112, 101, 101, 108, 108, 114, 114, 115, 116, 116, 116, 116, 116, 116, 68, 68, 57, 57, 57, 57, 102, 102, 120, 120, 117, 117, 121, 121, 121, 121, 103, 103, 103, 107, 107, 107, 113, 113, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 27, 27, 27, 27, 27, 27, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 111, 111, 104, 104, 104, 104, 127, 127, 130, 130, 129, 129, 131, 131, 51, 51, 51, 51, 133, 133, 132, 132, 132, 132, 132, 134, 134, 119, 119, 122, 122, 118, 118, 136, 135, 135, 135, 135, 123, 123, 123, 123, 110, 110, 124, 124, 124, 124, 76, 137, 137, 138, 138, 138, 109, 109, 139, 139, 140, 140, 140, 140, 140, 125, 125, 125, 125, 142, 143, 141, 141, 141, 141, 141, 141, 141, 144, 144, 144); - protected $ruleToLength = array(1, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 5, 4, 3, 4, 2, 3, 1, 1, 7, 6, 3, 1, 3, 1, 3, 1, 1, 3, 1, 3, 1, 2, 3, 1, 3, 3, 1, 3, 2, 0, 1, 1, 1, 1, 1, 3, 5, 8, 3, 5, 9, 3, 2, 3, 2, 3, 2, 3, 3, 3, 3, 1, 2, 2, 5, 7, 9, 5, 6, 3, 3, 2, 2, 1, 1, 1, 0, 2, 8, 0, 4, 1, 3, 0, 1, 0, 1, 0, 1, 10, 7, 6, 5, 1, 2, 2, 0, 2, 0, 2, 0, 2, 1, 3, 1, 4, 1, 4, 1, 1, 4, 1, 3, 3, 3, 4, 4, 5, 0, 2, 4, 3, 1, 1, 1, 4, 0, 2, 3, 0, 2, 4, 0, 2, 0, 3, 1, 2, 1, 1, 0, 1, 3, 4, 6, 1, 1, 1, 0, 1, 0, 2, 2, 3, 3, 1, 3, 1, 2, 2, 3, 1, 1, 2, 4, 3, 1, 1, 3, 2, 0, 1, 3, 3, 9, 3, 1, 3, 0, 2, 4, 5, 4, 4, 4, 3, 1, 1, 1, 3, 1, 1, 0, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 3, 3, 1, 0, 1, 1, 3, 3, 4, 4, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 5, 4, 3, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 3, 2, 1, 2, 10, 11, 3, 3, 2, 4, 4, 3, 4, 4, 4, 4, 7, 3, 2, 0, 4, 1, 3, 2, 2, 4, 6, 2, 2, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 4, 4, 0, 2, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, 1, 3, 1, 4, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 5, 4, 4, 3, 1, 3, 1, 1, 3, 3, 0, 2, 0, 1, 3, 1, 3, 1, 1, 1, 1, 1, 6, 4, 3, 4, 2, 4, 4, 1, 3, 1, 2, 1, 1, 4, 1, 1, 3, 6, 4, 4, 4, 4, 1, 4, 0, 1, 1, 3, 1, 1, 4, 3, 1, 1, 1, 0, 0, 2, 3, 1, 3, 1, 4, 2, 2, 2, 2, 1, 2, 1, 1, 1, 4, 3, 3, 3, 6, 3, 1, 1, 1); + protected $numNonLeafStates = 663; + protected $symbolToName = array("EOF", "error", "T_THROW", "T_INCLUDE", "T_INCLUDE_ONCE", "T_EVAL", "T_REQUIRE", "T_REQUIRE_ONCE", "','", "T_LOGICAL_OR", "T_LOGICAL_XOR", "T_LOGICAL_AND", "T_PRINT", "T_YIELD", "T_DOUBLE_ARROW", "T_YIELD_FROM", "'='", "T_PLUS_EQUAL", "T_MINUS_EQUAL", "T_MUL_EQUAL", "T_DIV_EQUAL", "T_CONCAT_EQUAL", "T_MOD_EQUAL", "T_AND_EQUAL", "T_OR_EQUAL", "T_XOR_EQUAL", "T_SL_EQUAL", "T_SR_EQUAL", "T_POW_EQUAL", "T_COALESCE_EQUAL", "'?'", "':'", "T_COALESCE", "T_BOOLEAN_OR", "T_BOOLEAN_AND", "'|'", "'^'", "T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG", "T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG", "T_IS_EQUAL", "T_IS_NOT_EQUAL", "T_IS_IDENTICAL", "T_IS_NOT_IDENTICAL", "T_SPACESHIP", "'<'", "T_IS_SMALLER_OR_EQUAL", "'>'", "T_IS_GREATER_OR_EQUAL", "T_SL", "T_SR", "'+'", "'-'", "'.'", "'*'", "'/'", "'%'", "'!'", "T_INSTANCEOF", "'~'", "T_INC", "T_DEC", "T_INT_CAST", "T_DOUBLE_CAST", "T_STRING_CAST", "T_ARRAY_CAST", "T_OBJECT_CAST", "T_BOOL_CAST", "T_UNSET_CAST", "'@'", "T_POW", "'['", "T_NEW", "T_CLONE", "T_EXIT", "T_IF", "T_ELSEIF", "T_ELSE", "T_ENDIF", "T_LNUMBER", "T_DNUMBER", "T_STRING", "T_STRING_VARNAME", "T_VARIABLE", "T_NUM_STRING", "T_INLINE_HTML", "T_ENCAPSED_AND_WHITESPACE", "T_CONSTANT_ENCAPSED_STRING", "T_ECHO", "T_DO", "T_WHILE", "T_ENDWHILE", "T_FOR", "T_ENDFOR", "T_FOREACH", "T_ENDFOREACH", "T_DECLARE", "T_ENDDECLARE", "T_AS", "T_SWITCH", "T_MATCH", "T_ENDSWITCH", "T_CASE", "T_DEFAULT", "T_BREAK", "T_CONTINUE", "T_GOTO", "T_FUNCTION", "T_FN", "T_CONST", "T_RETURN", "T_TRY", "T_CATCH", "T_FINALLY", "T_USE", "T_INSTEADOF", "T_GLOBAL", "T_STATIC", "T_ABSTRACT", "T_FINAL", "T_PRIVATE", "T_PROTECTED", "T_PUBLIC", "T_READONLY", "T_VAR", "T_UNSET", "T_ISSET", "T_EMPTY", "T_HALT_COMPILER", "T_CLASS", "T_TRAIT", "T_INTERFACE", "T_EXTENDS", "T_IMPLEMENTS", "T_OBJECT_OPERATOR", "T_LIST", "T_ARRAY", "T_CALLABLE", "T_CLASS_C", "T_TRAIT_C", "T_METHOD_C", "T_FUNC_C", "T_LINE", "T_FILE", "T_START_HEREDOC", "T_END_HEREDOC", "T_DOLLAR_OPEN_CURLY_BRACES", "T_CURLY_OPEN", "T_PAAMAYIM_NEKUDOTAYIM", "T_NAMESPACE", "T_NS_C", "T_DIR", "T_NS_SEPARATOR", "T_ELLIPSIS", "T_NAME_FULLY_QUALIFIED", "T_NAME_QUALIFIED", "T_NAME_RELATIVE", "';'", "'{'", "'}'", "'('", "')'", "'\$'", "'`'", "']'", "'\"'", "T_ENUM", "T_NULLSAFE_OBJECT_OPERATOR", "T_ATTRIBUTE"); + protected $tokenToSymbol = array(0, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 56, 164, 168, 161, 55, 168, 168, 159, 160, 53, 50, 8, 51, 52, 54, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 31, 156, 44, 16, 46, 30, 68, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 70, 168, 163, 36, 168, 162, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 157, 35, 158, 58, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 32, 33, 34, 37, 38, 39, 40, 41, 42, 43, 45, 47, 48, 49, 57, 59, 60, 61, 62, 63, 64, 65, 66, 67, 69, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 165, 131, 132, 133, 166, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 167); + protected $action = array(700, 670, 671, 672, 673, 674, 286, 675, 676, 677, 713, 714, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 0, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, -32766, -32766, -32766, -32766, -32766, -32766, -32766, -32766, -32766, -32767, -32767, -32767, -32767, 245, 246, 242, 243, 244, -32766, -32766, 678, -32766, -32766, -32766, -32766, -32766, -32766, -32766, -32766, -32766, 1229, 245, 246, 1230, 679, 680, 681, 682, 683, 684, 685, 899, 900, 747, -32766, -32766, -32766, -32766, -32766, -32766, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 716, 739, 717, 718, 719, 720, 708, 709, 710, 738, 711, 712, 697, 698, 699, 701, 702, 703, 741, 742, 743, 744, 745, 746, 875, 704, 705, 706, 707, 737, 728, 726, 727, 723, 724, 1046, 715, 721, 722, 729, 730, 732, 731, 733, 734, 55, 56, 425, 57, 58, 725, 736, 735, 755, 59, 60, -226, 61, -32766, -32766, -32766, -32766, -32766, -32766, -32766, -32766, -32766, -32766, 337, -32767, -32767, -32767, -32767, 29, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 620, -32766, -32766, -32766, -32766, 62, 63, 1046, -32766, -32766, -32766, 64, 419, 65, 294, 295, 66, 67, 68, 69, 70, 71, 72, 73, 823, 25, 302, 74, 418, 984, 986, 669, 668, 1100, 1101, 1078, 755, 755, 767, 1220, 768, 470, -32766, -32766, -32766, 341, 749, 824, 54, -32767, -32767, -32767, -32767, 98, 99, 100, 101, 102, 220, 221, 222, 362, 876, -32766, 27, -32766, -32766, -32766, -32766, -32766, 1046, 493, 126, 1080, 1079, 1081, 370, 1068, 930, 207, 478, 479, 952, 953, 954, 951, 950, 949, 128, 480, 481, 803, 1106, 1107, 1108, 1109, 1103, 1104, 319, 32, 297, 10, 211, -515, 1110, 1105, 669, 668, 1080, 1079, 1081, 220, 221, 222, 41, 364, 341, 334, 421, 336, 426, -128, -128, -128, 313, 1046, 469, -4, 824, 54, 812, 770, 207, 40, 21, 427, -128, 471, -128, 472, -128, 473, -128, 1046, 428, 220, 221, 222, -32766, 33, 34, 429, 361, 327, 52, 35, 474, -32766, -32766, -32766, 342, 357, 358, 475, 476, 48, 207, 249, 669, 668, 477, 443, 300, 795, 846, 430, 431, 28, -32766, 814, -32766, -32766, -32766, -32766, -32766, -32766, -32766, -32767, -32767, -32767, -32767, -32767, 952, 953, 954, 951, 950, 949, 422, 755, 424, 426, 826, 634, -128, -32766, -32766, 469, 824, 54, 288, 812, 1151, 755, 40, 21, 427, 317, 471, 345, 472, 129, 473, 9, 1186, 428, 769, 360, 324, 905, 33, 34, 429, 361, 1046, 415, 35, 474, 944, 1068, 315, 125, 357, 358, 475, 476, -32766, -32766, -32766, 926, 302, 477, 121, 1068, 759, 846, 430, 431, 669, 668, 423, 755, 1152, 809, 1046, 480, 766, -32766, 805, -32766, -32766, -32766, -32766, -261, 127, 347, 436, 841, 341, 1078, 1200, 426, 446, 826, 634, -4, 807, 469, 824, 54, 436, 812, 341, 755, 40, 21, 427, 444, 471, 130, 472, 1068, 473, 346, 767, 428, 768, -211, -211, -211, 33, 34, 429, 361, 308, 1076, 35, 474, -32766, -32766, -32766, 1046, 357, 358, 475, 476, -32766, -32766, -32766, 906, 120, 477, 539, 1068, 795, 846, 430, 431, 436, -32766, 341, -32766, -32766, -32766, 1046, 480, 810, -32766, 925, -32766, -32766, 754, 1080, 1079, 1081, 49, -32766, -32766, -32766, 749, 751, 426, 1201, 826, 634, -211, 30, 469, 669, 668, 436, 812, 341, 75, 40, 21, 427, -32766, 471, 1064, 472, 124, 473, 669, 668, 428, 212, -210, -210, -210, 33, 34, 429, 361, 51, 1186, 35, 474, 755, -32766, -32766, -32766, 357, 358, 475, 476, 213, 824, 54, 221, 222, 477, 20, 581, 795, 846, 430, 431, 220, 221, 222, 755, 222, 247, 78, 79, 80, 81, 341, 207, 517, 103, 104, 105, 752, 307, 131, 637, 1068, 207, 341, 207, 122, 826, 634, -210, 36, 106, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 1112, 307, 346, 436, 214, 341, 824, 54, 426, 123, 250, 129, 134, 106, 469, -32766, 572, 1112, 812, 245, 246, 40, 21, 427, 251, 471, 252, 472, 341, 473, 453, 22, 428, 207, 899, 900, 638, 33, 34, 429, 824, 54, -86, 35, 474, 220, 221, 222, 314, 357, 358, 100, 101, 102, 239, 240, 241, 645, 477, -230, 458, 589, 135, 374, 596, 597, 207, 760, 640, 648, 642, 941, 654, 929, 662, 822, 133, 307, 837, 426, -32766, 106, 749, 43, 44, 469, 45, 442, 46, 812, 826, 634, 40, 21, 427, 47, 471, 50, 472, 53, 473, 132, 608, 428, 302, 604, -280, -32766, 33, 34, 429, 824, 54, 426, 35, 474, 755, 957, -84, 469, 357, 358, 521, 812, 628, 363, 40, 21, 427, 477, 471, 575, 472, -515, 473, 847, 616, 428, -423, -32766, 11, 646, 33, 34, 429, 824, 54, 445, 35, 474, 462, 285, 578, 1111, 357, 358, 593, 369, 848, 594, 290, 826, 634, 477, 0, 0, 532, 0, 0, 325, 0, 0, 0, 0, 0, 651, 0, 0, 0, 322, 326, 0, 0, 0, 426, 0, 0, 0, 0, 323, 469, 316, 318, -516, 812, 862, 634, 40, 21, 427, 0, 471, 0, 472, 0, 473, 1158, 0, 428, 0, -414, 6, 7, 33, 34, 429, 824, 54, 426, 35, 474, 12, 14, 373, 469, 357, 358, -424, 812, 563, 754, 40, 21, 427, 477, 471, 248, 472, 839, 473, 38, 39, 428, 657, 658, 765, 813, 33, 34, 429, 821, 800, 815, 35, 474, 215, 216, 878, 869, 357, 358, 217, 870, 218, 798, 863, 826, 634, 477, 860, 858, 936, 937, 934, 820, 209, 804, 806, 808, 811, 933, 763, 764, 1100, 1101, 935, 659, 78, 335, 426, 359, 1102, 635, 639, 641, 469, 643, 644, 647, 812, 826, 634, 40, 21, 427, 649, 471, 650, 472, 652, 473, 653, 636, 428, 796, 1226, 1228, 762, 33, 34, 429, 215, 216, 845, 35, 474, 761, 217, 844, 218, 357, 358, 1227, 843, 1060, 831, 1048, 842, 1049, 477, 559, 209, 1106, 1107, 1108, 1109, 1103, 1104, 398, 1100, 1101, 829, 942, 867, 1110, 1105, 868, 1102, 457, 1225, 1194, 1192, 1177, 1157, 219, 1190, 1091, 917, 1198, 1188, 0, 826, 634, 24, -433, 26, 31, 37, 42, 76, 77, 210, 287, 292, 293, 308, 309, 310, 311, 339, 356, 416, 0, -227, -226, 16, 17, 18, 393, 454, 461, 463, 467, 553, 625, 1051, 559, 1054, 1106, 1107, 1108, 1109, 1103, 1104, 398, 907, 1116, 1050, 1026, 564, 1110, 1105, 1025, 1093, 1055, 0, 1044, 0, 1057, 1056, 219, 1059, 1058, 1075, 0, 1191, 1176, 1172, 1189, 1090, 1223, 1117, 1171, 600); + protected $actionCheck = array(2, 3, 4, 5, 6, 7, 14, 9, 10, 11, 12, 13, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 0, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 9, 10, 11, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 69, 70, 53, 54, 55, 9, 10, 57, 30, 116, 32, 33, 34, 35, 36, 37, 38, 80, 69, 70, 83, 71, 72, 73, 74, 75, 76, 77, 135, 136, 80, 33, 34, 35, 36, 37, 38, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 31, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 13, 134, 135, 136, 137, 138, 139, 140, 141, 142, 3, 4, 5, 6, 7, 148, 149, 150, 82, 12, 13, 160, 15, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 8, 44, 45, 46, 47, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 80, 33, 34, 35, 36, 50, 51, 13, 9, 10, 11, 56, 128, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 1, 70, 71, 72, 73, 59, 60, 37, 38, 78, 79, 80, 82, 82, 106, 85, 108, 86, 9, 10, 11, 161, 80, 1, 2, 44, 45, 46, 47, 48, 49, 50, 51, 52, 9, 10, 11, 106, 156, 30, 8, 32, 33, 34, 35, 36, 13, 116, 8, 153, 154, 155, 8, 122, 158, 30, 125, 126, 116, 117, 118, 119, 120, 121, 31, 134, 135, 156, 137, 138, 139, 140, 141, 142, 143, 145, 146, 8, 8, 133, 149, 150, 37, 38, 153, 154, 155, 9, 10, 11, 159, 8, 161, 162, 8, 164, 74, 75, 76, 77, 8, 13, 80, 0, 1, 2, 84, 158, 30, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 13, 98, 9, 10, 11, 9, 103, 104, 105, 106, 8, 70, 109, 110, 9, 10, 11, 8, 115, 116, 117, 118, 70, 30, 31, 37, 38, 124, 31, 8, 127, 128, 129, 130, 8, 30, 156, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 116, 117, 118, 119, 120, 121, 8, 82, 8, 74, 156, 157, 158, 33, 34, 80, 1, 2, 8, 84, 163, 82, 87, 88, 89, 133, 91, 70, 93, 152, 95, 108, 82, 98, 158, 8, 113, 160, 103, 104, 105, 106, 13, 108, 109, 110, 123, 122, 113, 157, 115, 116, 117, 118, 9, 10, 11, 156, 71, 124, 157, 122, 127, 128, 129, 130, 37, 38, 8, 82, 160, 156, 13, 134, 156, 30, 156, 32, 33, 34, 35, 158, 157, 148, 159, 122, 161, 80, 1, 74, 133, 156, 157, 158, 156, 80, 1, 2, 159, 84, 161, 82, 87, 88, 89, 157, 91, 157, 93, 122, 95, 161, 106, 98, 108, 100, 101, 102, 103, 104, 105, 106, 159, 116, 109, 110, 9, 10, 11, 13, 115, 116, 117, 118, 9, 10, 11, 160, 16, 124, 81, 122, 127, 128, 129, 130, 159, 30, 161, 32, 33, 34, 13, 134, 156, 30, 156, 32, 33, 153, 153, 154, 155, 70, 9, 10, 11, 80, 80, 74, 160, 156, 157, 158, 14, 80, 37, 38, 159, 84, 161, 152, 87, 88, 89, 30, 91, 160, 93, 14, 95, 37, 38, 98, 16, 100, 101, 102, 103, 104, 105, 106, 70, 82, 109, 110, 82, 33, 34, 35, 115, 116, 117, 118, 16, 1, 2, 10, 11, 124, 160, 85, 127, 128, 129, 130, 9, 10, 11, 82, 11, 14, 157, 9, 10, 11, 161, 30, 85, 53, 54, 55, 154, 57, 157, 31, 122, 30, 161, 30, 157, 156, 157, 158, 30, 69, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 144, 57, 161, 159, 16, 161, 1, 2, 74, 157, 16, 152, 157, 69, 80, 116, 161, 144, 84, 69, 70, 87, 88, 89, 16, 91, 16, 93, 161, 95, 75, 76, 98, 30, 135, 136, 31, 103, 104, 105, 1, 2, 31, 109, 110, 9, 10, 11, 31, 115, 116, 50, 51, 52, 50, 51, 52, 31, 124, 160, 75, 76, 101, 102, 111, 112, 30, 156, 157, 31, 31, 156, 157, 156, 157, 31, 31, 57, 38, 74, 33, 69, 80, 70, 70, 80, 70, 89, 70, 84, 156, 157, 87, 88, 89, 70, 91, 70, 93, 70, 95, 70, 96, 98, 71, 77, 82, 85, 103, 104, 105, 1, 2, 74, 109, 110, 82, 82, 97, 80, 115, 116, 85, 84, 92, 106, 87, 88, 89, 124, 91, 90, 93, 133, 95, 128, 94, 98, 147, 116, 97, 31, 103, 104, 105, 1, 2, 97, 109, 110, 97, 97, 100, 144, 115, 116, 100, 106, 128, 113, 161, 156, 157, 124, -1, -1, 151, -1, -1, 114, -1, -1, -1, -1, -1, 31, -1, -1, -1, 131, 131, -1, -1, -1, 74, -1, -1, -1, -1, 132, 80, 133, 133, 133, 84, 156, 157, 87, 88, 89, -1, 91, -1, 93, -1, 95, 144, -1, 98, -1, 147, 147, 147, 103, 104, 105, 1, 2, 74, 109, 110, 147, 147, 147, 80, 115, 116, 147, 84, 151, 153, 87, 88, 89, 124, 91, 31, 93, 152, 95, 156, 156, 98, 156, 156, 156, 156, 103, 104, 105, 156, 156, 156, 109, 110, 50, 51, 156, 156, 115, 116, 56, 156, 58, 156, 156, 156, 157, 124, 156, 156, 156, 156, 156, 156, 70, 156, 156, 156, 156, 156, 156, 156, 78, 79, 156, 158, 157, 157, 74, 157, 86, 157, 157, 157, 80, 157, 157, 157, 84, 156, 157, 87, 88, 89, 157, 91, 157, 93, 157, 95, 157, 157, 98, 158, 158, 158, 158, 103, 104, 105, 50, 51, 158, 109, 110, 158, 56, 158, 58, 115, 116, 158, 158, 158, 158, 158, 158, 158, 124, 135, 70, 137, 138, 139, 140, 141, 142, 143, 78, 79, 158, 158, 158, 149, 150, 158, 86, 158, 158, 158, 158, 158, 164, 159, 158, 158, 158, 158, 158, -1, 156, 157, 159, 162, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, -1, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 135, 160, 137, 138, 139, 140, 141, 142, 143, 160, 160, 160, 160, 160, 149, 150, 160, 160, 163, -1, 162, -1, 163, 163, 159, 163, 163, 163, -1, 163, 163, 163, 163, 163, 163, 163, 163, 163); + protected $actionBase = array(0, 229, 310, 390, 470, 103, 325, 325, 784, -2, -2, 149, -2, -2, -2, 660, 765, 799, 765, 589, 694, 870, 870, 870, 252, 404, 404, 404, 514, 177, 177, 918, 434, 118, 295, 313, 240, 491, 491, 491, 491, 138, 138, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 89, 206, 773, 550, 535, 775, 776, 777, 912, 709, 913, 856, 857, 700, 858, 859, 862, 863, 864, 855, 865, 935, 866, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 322, 592, 285, 319, 232, 44, 691, 691, 691, 691, 691, 691, 691, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 582, 530, 530, 530, 594, 860, 658, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 500, -21, -21, 492, 702, 420, 355, 216, 549, 151, 26, 26, 331, 331, 331, 331, 331, 46, 46, 5, 5, 5, 5, 153, 188, 188, 188, 188, 121, 121, 121, 121, 314, 314, 394, 394, 362, 300, 298, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 67, 656, 656, 659, 659, 522, 554, 554, 554, 554, 679, -59, -59, 381, 462, 462, 462, 528, 717, 854, 382, 382, 382, 382, 382, 382, 561, 561, 561, -3, -3, -3, 692, 115, 137, 115, 137, 678, 732, 450, 732, 338, 677, -15, 510, 810, 468, 707, 850, 711, 853, 572, 735, 267, 529, 654, 674, 463, 529, 529, 529, 529, 654, 610, 640, 608, 463, 529, 463, 718, 323, 496, 89, 570, 507, 675, 778, 293, 670, 780, 290, 373, 332, 566, 278, 435, 733, 781, 914, 917, 385, 715, 675, 675, 675, 352, 511, 278, -8, 605, 605, 605, 605, 156, 605, 605, 605, 605, 251, 276, 375, 402, 779, 657, 657, 690, 872, 869, 869, 657, 689, 657, 690, 874, 874, 874, 874, 657, 657, 657, 657, 869, 869, 869, 688, 869, 239, 703, 704, 704, 874, 742, 743, 657, 657, 712, 869, 869, 869, 712, 695, 874, 701, 741, 277, 869, 874, 672, 689, 672, 657, 701, 672, 689, 689, 672, 22, 666, 668, 873, 875, 887, 790, 662, 685, 879, 880, 876, 878, 871, 699, 744, 745, 497, 669, 671, 673, 680, 719, 682, 713, 674, 667, 667, 667, 655, 720, 655, 667, 667, 667, 667, 667, 667, 667, 667, 916, 646, 731, 714, 653, 749, 553, 573, 791, 664, 811, 900, 893, 867, 919, 881, 898, 655, 920, 739, 247, 643, 882, 783, 786, 655, 883, 655, 792, 655, 902, 812, 686, 813, 814, 667, 910, 921, 923, 924, 925, 927, 928, 929, 930, 684, 931, 750, 696, 894, 299, 877, 718, 729, 705, 788, 751, 820, 328, 932, 823, 655, 655, 794, 785, 655, 795, 756, 740, 890, 757, 895, 933, 664, 708, 896, 655, 706, 825, 934, 328, 681, 683, 888, 661, 761, 886, 911, 885, 796, 649, 663, 829, 830, 831, 693, 763, 891, 892, 889, 764, 803, 665, 805, 697, 832, 807, 884, 768, 833, 834, 899, 676, 730, 710, 698, 687, 809, 835, 897, 769, 770, 771, 848, 772, 849, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, 138, 138, 138, -2, -2, -2, -2, 0, 0, -2, 0, 0, 0, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 0, 0, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 599, -21, -21, -21, -21, 599, -21, -21, -21, -21, -21, -21, -21, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, -21, 599, 599, 599, -21, 382, -21, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 599, 0, 0, 599, -21, 599, -21, 599, -21, -21, 599, 599, 599, 599, 599, 599, 599, -21, -21, -21, -21, -21, -21, 0, 561, 561, 561, 561, -21, -21, -21, -21, 382, 382, 382, 382, 382, 382, 259, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 561, 561, -3, -3, 382, 382, 382, 382, 382, 259, 382, 382, 463, 689, 689, 689, 137, 137, 137, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 137, 463, 0, 463, 0, 382, 463, 689, 463, 657, 137, 689, 689, 463, 869, 616, 616, 616, 616, 328, 278, 0, 0, 689, 689, 0, 0, 0, 0, 0, 689, 0, 0, 0, 0, 0, 0, 869, 0, 0, 0, 0, 0, 667, 247, 0, 705, 335, 0, 0, 0, 0, 0, 0, 705, 335, 347, 347, 0, 684, 667, 667, 667, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 328); + protected $actionDefault = array(3, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 544, 544, 499, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 299, 299, 299, 32767, 32767, 32767, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 32767, 32767, 32767, 32767, 32767, 32767, 383, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 389, 549, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 364, 365, 367, 368, 298, 552, 533, 247, 390, 548, 297, 249, 327, 503, 32767, 32767, 32767, 329, 122, 258, 203, 502, 125, 296, 234, 382, 384, 328, 303, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 302, 458, 361, 360, 359, 460, 32767, 459, 496, 496, 499, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 325, 487, 486, 326, 456, 330, 457, 333, 461, 464, 331, 332, 349, 350, 347, 348, 351, 462, 463, 480, 481, 478, 479, 301, 352, 353, 354, 355, 482, 483, 484, 485, 32767, 32767, 543, 543, 32767, 32767, 282, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 340, 341, 471, 472, 32767, 238, 238, 238, 238, 283, 238, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 335, 336, 334, 466, 467, 465, 432, 32767, 32767, 32767, 434, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 504, 32767, 32767, 32767, 32767, 32767, 517, 421, 171, 32767, 413, 32767, 171, 171, 171, 171, 32767, 222, 224, 167, 32767, 171, 32767, 490, 32767, 32767, 32767, 32767, 522, 345, 32767, 32767, 116, 32767, 32767, 32767, 559, 32767, 517, 32767, 116, 32767, 32767, 32767, 32767, 358, 337, 338, 339, 32767, 32767, 521, 515, 474, 475, 476, 477, 32767, 468, 469, 470, 473, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 429, 435, 435, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 520, 519, 32767, 414, 498, 188, 186, 186, 32767, 208, 208, 32767, 32767, 190, 491, 510, 32767, 190, 173, 32767, 400, 175, 498, 32767, 32767, 240, 32767, 240, 32767, 400, 240, 32767, 32767, 240, 32767, 415, 439, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 379, 380, 493, 506, 32767, 507, 32767, 413, 343, 344, 346, 322, 32767, 324, 369, 370, 371, 372, 373, 374, 375, 377, 32767, 419, 32767, 422, 32767, 32767, 32767, 257, 32767, 557, 32767, 32767, 306, 557, 32767, 32767, 32767, 551, 32767, 32767, 300, 32767, 32767, 32767, 32767, 253, 32767, 169, 32767, 541, 32767, 558, 32767, 515, 32767, 342, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 516, 32767, 32767, 32767, 32767, 229, 32767, 452, 32767, 116, 32767, 32767, 32767, 189, 32767, 32767, 304, 248, 32767, 32767, 550, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 114, 32767, 170, 32767, 32767, 32767, 191, 32767, 32767, 515, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 295, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 515, 32767, 32767, 233, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 415, 32767, 276, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 127, 127, 3, 127, 127, 260, 3, 260, 127, 260, 260, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 216, 219, 208, 208, 164, 127, 127, 268); + protected $goto = array(166, 140, 140, 140, 166, 187, 168, 144, 147, 141, 142, 143, 149, 163, 163, 163, 163, 144, 144, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 138, 159, 160, 161, 162, 184, 139, 185, 494, 495, 377, 496, 500, 501, 502, 503, 504, 505, 506, 507, 970, 164, 145, 146, 148, 171, 176, 186, 203, 253, 256, 258, 260, 263, 264, 265, 266, 267, 268, 269, 277, 278, 279, 280, 303, 304, 328, 329, 330, 394, 395, 396, 543, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 150, 151, 152, 167, 153, 169, 154, 204, 170, 155, 156, 157, 205, 158, 136, 621, 561, 757, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 1113, 629, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 758, 520, 531, 509, 656, 556, 1183, 750, 509, 592, 786, 1183, 888, 612, 613, 884, 617, 618, 624, 626, 631, 633, 817, 855, 855, 855, 855, 850, 856, 174, 891, 891, 1205, 1205, 177, 178, 179, 401, 402, 403, 404, 173, 202, 206, 208, 257, 259, 261, 262, 270, 271, 272, 273, 274, 275, 281, 282, 283, 284, 305, 306, 331, 332, 333, 406, 407, 408, 409, 175, 180, 254, 255, 181, 182, 183, 498, 498, 498, 498, 498, 498, 861, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 510, 586, 538, 601, 602, 510, 545, 546, 547, 548, 549, 550, 551, 552, 554, 587, 1209, 560, 350, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 400, 607, 537, 537, 569, 533, 909, 535, 535, 497, 499, 525, 541, 570, 573, 584, 591, 298, 296, 296, 296, 298, 289, 299, 611, 378, 511, 614, 595, 947, 375, 511, 437, 437, 437, 437, 437, 437, 1163, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 1077, 948, 338, 1175, 321, 1077, 898, 898, 898, 898, 606, 898, 898, 1217, 1217, 1202, 753, 576, 605, 756, 1077, 1077, 1077, 1077, 1077, 1077, 1069, 384, 384, 384, 391, 1217, 877, 859, 857, 859, 655, 466, 512, 886, 881, 753, 384, 753, 384, 968, 384, 895, 385, 588, 353, 414, 384, 1231, 1019, 542, 1197, 1197, 1197, 568, 1094, 386, 386, 386, 904, 915, 515, 1029, 19, 15, 372, 389, 915, 940, 448, 450, 632, 340, 1216, 1216, 1114, 615, 938, 840, 555, 775, 386, 913, 1070, 1073, 1074, 399, 1069, 1182, 660, 23, 1216, 773, 1182, 544, 603, 1066, 1219, 1071, 1174, 1071, 519, 1199, 1199, 1199, 1089, 1088, 1072, 343, 523, 534, 519, 519, 772, 351, 352, 13, 579, 583, 627, 1061, 388, 782, 562, 771, 515, 783, 1181, 3, 4, 918, 956, 865, 451, 574, 1160, 464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 514, 529, 0, 0, 0, 0, 514, 0, 529, 0, 0, 0, 0, 610, 513, 516, 439, 440, 1067, 619, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 780, 1224, 0, 0, 0, 0, 0, 524, 0, 0, 0, 0, 0, 0, 0, 0, 0, 778, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 301, 301); + protected $gotoCheck = array(43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 57, 69, 15, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 128, 9, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 16, 102, 32, 69, 32, 32, 120, 6, 69, 32, 29, 120, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 50, 69, 69, 69, 69, 69, 69, 27, 77, 77, 77, 77, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 119, 119, 119, 119, 119, 119, 33, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 67, 110, 67, 67, 119, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 142, 57, 72, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 51, 51, 51, 51, 51, 51, 84, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 5, 5, 5, 5, 5, 5, 5, 63, 46, 124, 63, 129, 98, 63, 124, 57, 57, 57, 57, 57, 57, 133, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 98, 127, 82, 127, 57, 57, 57, 57, 57, 49, 57, 57, 144, 144, 140, 11, 40, 40, 14, 57, 57, 57, 57, 57, 57, 82, 13, 13, 13, 48, 144, 14, 14, 14, 14, 14, 57, 14, 14, 14, 11, 13, 11, 13, 102, 13, 79, 11, 70, 70, 70, 13, 13, 103, 2, 9, 9, 9, 2, 34, 125, 125, 125, 81, 13, 13, 34, 34, 34, 34, 17, 13, 8, 8, 8, 8, 18, 143, 143, 8, 8, 8, 9, 34, 25, 125, 85, 82, 82, 82, 125, 82, 121, 74, 34, 143, 24, 121, 47, 34, 116, 143, 82, 82, 82, 47, 121, 121, 121, 126, 126, 82, 58, 58, 58, 47, 47, 23, 72, 72, 58, 62, 62, 62, 114, 12, 23, 12, 23, 13, 26, 121, 30, 30, 86, 100, 71, 65, 66, 132, 109, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 9, 9, -1, -1, -1, -1, 9, -1, 9, -1, -1, -1, -1, 13, 9, 9, 9, 9, 13, 13, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 9, 9, -1, -1, -1, -1, -1, 102, -1, -1, -1, -1, -1, -1, -1, -1, -1, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5, 5); + protected $gotoBase = array(0, 0, -172, 0, 0, 353, 201, 0, 477, 149, 0, 110, 195, 117, 426, 112, 203, 140, 171, 0, 0, 0, 0, 168, 164, 157, 119, 27, 0, 205, -118, 0, -428, 266, 51, 0, 0, 0, 0, 0, 388, 0, 0, -24, 0, 0, 345, 484, 146, 133, 209, 75, 0, 0, 0, 0, 0, 107, 161, 0, 0, 0, 222, -77, 0, 106, 97, -343, 0, -94, 135, 123, -129, 0, 129, 0, 0, -50, 0, 143, 0, 159, 64, 0, 338, 132, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 98, 0, 121, 0, 165, 156, 0, 0, 0, 0, 0, 87, 273, 259, 0, 0, 114, 0, 150, 0, 0, -5, -91, 200, 0, 0, 84, 154, 202, 77, -48, 178, 0, 0, 93, 187, 0, 0, 0, 0, 0, 0, 136, 0, 286, 167, 102, 0, 0); + protected $gotoDefault = array(-32768, 468, 664, 2, 665, 835, 740, 748, 598, 482, 630, 582, 380, 1193, 792, 793, 794, 381, 368, 483, 379, 410, 405, 781, 774, 776, 784, 172, 411, 787, 1, 789, 518, 825, 1020, 365, 797, 366, 590, 799, 527, 801, 802, 137, 382, 383, 528, 484, 390, 577, 816, 276, 387, 818, 367, 819, 828, 371, 465, 455, 460, 530, 557, 609, 432, 447, 571, 565, 536, 1086, 566, 864, 349, 872, 661, 880, 883, 485, 558, 894, 452, 902, 1099, 397, 908, 914, 919, 291, 922, 417, 412, 585, 927, 928, 5, 932, 622, 623, 8, 312, 955, 599, 969, 420, 1039, 1041, 486, 487, 522, 459, 508, 526, 488, 1062, 441, 413, 1065, 433, 489, 490, 434, 435, 1083, 355, 1168, 354, 449, 320, 1155, 580, 1118, 456, 1208, 1164, 348, 491, 492, 376, 1187, 392, 1203, 438, 1210, 1218, 344, 540, 567); + protected $ruleToNonTerminal = array(0, 1, 3, 3, 2, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 8, 8, 9, 10, 11, 11, 12, 12, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 18, 18, 19, 19, 21, 21, 17, 17, 22, 22, 23, 23, 24, 24, 25, 25, 20, 20, 26, 28, 28, 29, 30, 30, 32, 31, 31, 31, 31, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 14, 14, 54, 54, 56, 55, 55, 48, 48, 58, 58, 59, 59, 60, 60, 61, 61, 15, 16, 16, 16, 64, 64, 64, 65, 65, 68, 68, 66, 66, 70, 70, 41, 41, 50, 50, 53, 53, 53, 52, 52, 71, 42, 42, 42, 42, 72, 72, 73, 73, 74, 74, 39, 39, 35, 35, 75, 37, 37, 76, 36, 36, 38, 38, 49, 49, 49, 62, 62, 78, 78, 79, 79, 81, 81, 81, 80, 80, 63, 63, 82, 82, 82, 83, 83, 84, 84, 84, 44, 44, 85, 85, 85, 45, 45, 86, 86, 87, 87, 67, 88, 88, 88, 88, 93, 93, 94, 94, 95, 95, 95, 95, 95, 96, 97, 97, 92, 92, 89, 89, 91, 91, 99, 99, 98, 98, 98, 98, 98, 98, 90, 90, 101, 100, 100, 46, 46, 40, 40, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 34, 34, 47, 47, 106, 106, 107, 107, 107, 107, 113, 102, 102, 109, 109, 115, 115, 116, 117, 118, 118, 118, 118, 118, 118, 118, 69, 69, 57, 57, 57, 57, 103, 103, 122, 122, 119, 119, 123, 123, 123, 123, 104, 104, 104, 108, 108, 108, 114, 114, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 27, 27, 27, 27, 27, 27, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 112, 112, 105, 105, 105, 105, 129, 129, 132, 132, 131, 131, 133, 133, 51, 51, 51, 51, 135, 135, 134, 134, 134, 134, 134, 136, 136, 121, 121, 124, 124, 120, 120, 138, 137, 137, 137, 137, 125, 125, 125, 125, 111, 111, 126, 126, 126, 126, 77, 139, 139, 140, 140, 140, 110, 110, 141, 141, 142, 142, 142, 142, 142, 127, 127, 127, 127, 144, 145, 143, 143, 143, 143, 143, 143, 143, 146, 146, 146); + protected $ruleToLength = array(1, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 5, 4, 3, 4, 2, 3, 1, 1, 7, 6, 3, 1, 3, 1, 3, 1, 1, 3, 1, 3, 1, 2, 3, 1, 3, 3, 1, 3, 2, 0, 1, 1, 1, 1, 1, 3, 5, 8, 3, 5, 9, 3, 2, 3, 2, 3, 2, 3, 3, 3, 3, 1, 2, 2, 5, 7, 9, 5, 6, 3, 3, 2, 2, 1, 1, 1, 0, 2, 8, 0, 4, 1, 3, 0, 1, 0, 1, 0, 1, 1, 1, 10, 7, 6, 5, 1, 2, 2, 0, 2, 0, 2, 0, 2, 1, 3, 1, 4, 1, 4, 1, 1, 4, 1, 3, 3, 3, 4, 4, 5, 0, 2, 4, 3, 1, 1, 1, 4, 0, 2, 3, 0, 2, 4, 0, 2, 0, 3, 1, 2, 1, 1, 0, 1, 3, 4, 6, 1, 1, 1, 0, 1, 0, 2, 2, 3, 3, 1, 3, 1, 2, 2, 3, 1, 1, 2, 4, 3, 1, 1, 3, 2, 0, 1, 3, 3, 9, 3, 1, 3, 0, 2, 4, 5, 4, 4, 4, 3, 1, 1, 1, 3, 1, 1, 0, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 3, 3, 1, 0, 1, 1, 3, 3, 4, 4, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 5, 4, 3, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 3, 2, 1, 2, 10, 11, 3, 3, 2, 4, 4, 3, 4, 4, 4, 4, 7, 3, 2, 0, 4, 1, 3, 2, 1, 2, 2, 4, 6, 2, 2, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 4, 4, 0, 2, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, 1, 3, 1, 4, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 5, 4, 4, 3, 1, 3, 1, 1, 3, 3, 0, 2, 0, 1, 3, 1, 3, 1, 1, 1, 1, 1, 6, 4, 3, 4, 2, 4, 4, 1, 3, 1, 2, 1, 1, 4, 1, 1, 3, 6, 4, 4, 4, 4, 1, 4, 0, 1, 1, 3, 1, 1, 4, 3, 1, 1, 1, 0, 0, 2, 3, 1, 3, 1, 4, 2, 2, 2, 2, 1, 2, 1, 1, 1, 4, 3, 3, 3, 6, 3, 1, 1, 1); protected function initReduceCallbacks() { $this->reduceCallbacks = [0 => function ($stackPos) { @@ -16242,27 +16397,27 @@ class Php5 extends \PHPUnit\PhpParser\ParserAbstract }, 176 => function ($stackPos) { $this->semValue = \true; }, 177 => function ($stackPos) { - $this->semValue = new Stmt\Function_($this->semStack[$stackPos - (10 - 3)], ['byRef' => $this->semStack[$stackPos - (10 - 2)], 'params' => $this->semStack[$stackPos - (10 - 5)], 'returnType' => $this->semStack[$stackPos - (10 - 7)], 'stmts' => $this->semStack[$stackPos - (10 - 9)]], $this->startAttributeStack[$stackPos - (10 - 1)] + $this->endAttributes); + $this->semValue = $this->semStack[$stackPos - (1 - 1)]; }, 178 => function ($stackPos) { + $this->semValue = new Node\Identifier($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); + }, 179 => function ($stackPos) { + $this->semValue = new Stmt\Function_($this->semStack[$stackPos - (10 - 3)], ['byRef' => $this->semStack[$stackPos - (10 - 2)], 'params' => $this->semStack[$stackPos - (10 - 5)], 'returnType' => $this->semStack[$stackPos - (10 - 7)], 'stmts' => $this->semStack[$stackPos - (10 - 9)]], $this->startAttributeStack[$stackPos - (10 - 1)] + $this->endAttributes); + }, 180 => function ($stackPos) { $this->semValue = new Stmt\Class_($this->semStack[$stackPos - (7 - 2)], ['type' => $this->semStack[$stackPos - (7 - 1)], 'extends' => $this->semStack[$stackPos - (7 - 3)], 'implements' => $this->semStack[$stackPos - (7 - 4)], 'stmts' => $this->semStack[$stackPos - (7 - 6)]], $this->startAttributeStack[$stackPos - (7 - 1)] + $this->endAttributes); $this->checkClass($this->semValue, $stackPos - (7 - 2)); - }, 179 => function ($stackPos) { + }, 181 => function ($stackPos) { $this->semValue = new Stmt\Interface_($this->semStack[$stackPos - (6 - 2)], ['extends' => $this->semStack[$stackPos - (6 - 3)], 'stmts' => $this->semStack[$stackPos - (6 - 5)]], $this->startAttributeStack[$stackPos - (6 - 1)] + $this->endAttributes); $this->checkInterface($this->semValue, $stackPos - (6 - 2)); - }, 180 => function ($stackPos) { - $this->semValue = new Stmt\Trait_($this->semStack[$stackPos - (5 - 2)], ['stmts' => $this->semStack[$stackPos - (5 - 4)]], $this->startAttributeStack[$stackPos - (5 - 1)] + $this->endAttributes); - }, 181 => function ($stackPos) { - $this->semValue = 0; }, 182 => function ($stackPos) { - $this->semValue = Stmt\Class_::MODIFIER_ABSTRACT; + $this->semValue = new Stmt\Trait_($this->semStack[$stackPos - (5 - 2)], ['stmts' => $this->semStack[$stackPos - (5 - 4)]], $this->startAttributeStack[$stackPos - (5 - 1)] + $this->endAttributes); }, 183 => function ($stackPos) { - $this->semValue = Stmt\Class_::MODIFIER_FINAL; + $this->semValue = 0; }, 184 => function ($stackPos) { - $this->semValue = null; + $this->semValue = Stmt\Class_::MODIFIER_ABSTRACT; }, 185 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos - (2 - 2)]; + $this->semValue = Stmt\Class_::MODIFIER_FINAL; }, 186 => function ($stackPos) { - $this->semValue = array(); + $this->semValue = null; }, 187 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (2 - 2)]; }, 188 => function ($stackPos) { @@ -16270,14 +16425,14 @@ class Php5 extends \PHPUnit\PhpParser\ParserAbstract }, 189 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (2 - 2)]; }, 190 => function ($stackPos) { - $this->semValue = array($this->semStack[$stackPos - (1 - 1)]); + $this->semValue = array(); }, 191 => function ($stackPos) { - $this->semStack[$stackPos - (3 - 1)][] = $this->semStack[$stackPos - (3 - 3)]; - $this->semValue = $this->semStack[$stackPos - (3 - 1)]; + $this->semValue = $this->semStack[$stackPos - (2 - 2)]; }, 192 => function ($stackPos) { - $this->semValue = \is_array($this->semStack[$stackPos - (1 - 1)]) ? $this->semStack[$stackPos - (1 - 1)] : array($this->semStack[$stackPos - (1 - 1)]); + $this->semValue = array($this->semStack[$stackPos - (1 - 1)]); }, 193 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos - (4 - 2)]; + $this->semStack[$stackPos - (3 - 1)][] = $this->semStack[$stackPos - (3 - 3)]; + $this->semValue = $this->semStack[$stackPos - (3 - 1)]; }, 194 => function ($stackPos) { $this->semValue = \is_array($this->semStack[$stackPos - (1 - 1)]) ? $this->semStack[$stackPos - (1 - 1)] : array($this->semStack[$stackPos - (1 - 1)]); }, 195 => function ($stackPos) { @@ -16285,143 +16440,147 @@ class Php5 extends \PHPUnit\PhpParser\ParserAbstract }, 196 => function ($stackPos) { $this->semValue = \is_array($this->semStack[$stackPos - (1 - 1)]) ? $this->semStack[$stackPos - (1 - 1)] : array($this->semStack[$stackPos - (1 - 1)]); }, 197 => function ($stackPos) { - $this->semValue = null; - }, 198 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (4 - 2)]; + }, 198 => function ($stackPos) { + $this->semValue = \is_array($this->semStack[$stackPos - (1 - 1)]) ? $this->semStack[$stackPos - (1 - 1)] : array($this->semStack[$stackPos - (1 - 1)]); }, 199 => function ($stackPos) { - $this->semValue = array($this->semStack[$stackPos - (1 - 1)]); + $this->semValue = null; }, 200 => function ($stackPos) { + $this->semValue = $this->semStack[$stackPos - (4 - 2)]; + }, 201 => function ($stackPos) { + $this->semValue = array($this->semStack[$stackPos - (1 - 1)]); + }, 202 => function ($stackPos) { $this->semStack[$stackPos - (3 - 1)][] = $this->semStack[$stackPos - (3 - 3)]; $this->semValue = $this->semStack[$stackPos - (3 - 1)]; - }, 201 => function ($stackPos) { + }, 203 => function ($stackPos) { $this->semValue = new Stmt\DeclareDeclare($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 202 => function ($stackPos) { + }, 204 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (3 - 2)]; - }, 203 => function ($stackPos) { + }, 205 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (4 - 3)]; - }, 204 => function ($stackPos) { + }, 206 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (4 - 2)]; - }, 205 => function ($stackPos) { + }, 207 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (5 - 3)]; - }, 206 => function ($stackPos) { + }, 208 => function ($stackPos) { $this->semValue = array(); - }, 207 => function ($stackPos) { + }, 209 => function ($stackPos) { $this->semStack[$stackPos - (2 - 1)][] = $this->semStack[$stackPos - (2 - 2)]; $this->semValue = $this->semStack[$stackPos - (2 - 1)]; - }, 208 => function ($stackPos) { + }, 210 => function ($stackPos) { $this->semValue = new Stmt\Case_($this->semStack[$stackPos - (4 - 2)], $this->semStack[$stackPos - (4 - 4)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 209 => function ($stackPos) { + }, 211 => function ($stackPos) { $this->semValue = new Stmt\Case_(null, $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 210 => function ($stackPos) { + }, 212 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos]; - }, 211 => function ($stackPos) { + }, 213 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos]; - }, 212 => function ($stackPos) { + }, 214 => function ($stackPos) { $this->semValue = \is_array($this->semStack[$stackPos - (1 - 1)]) ? $this->semStack[$stackPos - (1 - 1)] : array($this->semStack[$stackPos - (1 - 1)]); - }, 213 => function ($stackPos) { + }, 215 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (4 - 2)]; - }, 214 => function ($stackPos) { + }, 216 => function ($stackPos) { $this->semValue = array(); - }, 215 => function ($stackPos) { + }, 217 => function ($stackPos) { $this->semStack[$stackPos - (2 - 1)][] = $this->semStack[$stackPos - (2 - 2)]; $this->semValue = $this->semStack[$stackPos - (2 - 1)]; - }, 216 => function ($stackPos) { + }, 218 => function ($stackPos) { $this->semValue = new Stmt\ElseIf_($this->semStack[$stackPos - (3 - 2)], \is_array($this->semStack[$stackPos - (3 - 3)]) ? $this->semStack[$stackPos - (3 - 3)] : array($this->semStack[$stackPos - (3 - 3)]), $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 217 => function ($stackPos) { + }, 219 => function ($stackPos) { $this->semValue = array(); - }, 218 => function ($stackPos) { + }, 220 => function ($stackPos) { $this->semStack[$stackPos - (2 - 1)][] = $this->semStack[$stackPos - (2 - 2)]; $this->semValue = $this->semStack[$stackPos - (2 - 1)]; - }, 219 => function ($stackPos) { - $this->semValue = new Stmt\ElseIf_($this->semStack[$stackPos - (4 - 2)], $this->semStack[$stackPos - (4 - 4)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 220 => function ($stackPos) { - $this->semValue = null; }, 221 => function ($stackPos) { - $this->semValue = new Stmt\Else_(\is_array($this->semStack[$stackPos - (2 - 2)]) ? $this->semStack[$stackPos - (2 - 2)] : array($this->semStack[$stackPos - (2 - 2)]), $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); + $this->semValue = new Stmt\ElseIf_($this->semStack[$stackPos - (4 - 2)], $this->semStack[$stackPos - (4 - 4)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); }, 222 => function ($stackPos) { $this->semValue = null; }, 223 => function ($stackPos) { - $this->semValue = new Stmt\Else_($this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); + $this->semValue = new Stmt\Else_(\is_array($this->semStack[$stackPos - (2 - 2)]) ? $this->semStack[$stackPos - (2 - 2)] : array($this->semStack[$stackPos - (2 - 2)]), $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); }, 224 => function ($stackPos) { - $this->semValue = array($this->semStack[$stackPos - (1 - 1)], \false); + $this->semValue = null; }, 225 => function ($stackPos) { - $this->semValue = array($this->semStack[$stackPos - (2 - 2)], \true); + $this->semValue = new Stmt\Else_($this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); }, 226 => function ($stackPos) { $this->semValue = array($this->semStack[$stackPos - (1 - 1)], \false); }, 227 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos - (1 - 1)]; + $this->semValue = array($this->semStack[$stackPos - (2 - 2)], \true); }, 228 => function ($stackPos) { - $this->semValue = array(); + $this->semValue = array($this->semStack[$stackPos - (1 - 1)], \false); }, 229 => function ($stackPos) { - $this->semValue = array($this->semStack[$stackPos - (1 - 1)]); + $this->semValue = $this->semStack[$stackPos - (1 - 1)]; }, 230 => function ($stackPos) { + $this->semValue = array(); + }, 231 => function ($stackPos) { + $this->semValue = array($this->semStack[$stackPos - (1 - 1)]); + }, 232 => function ($stackPos) { $this->semStack[$stackPos - (3 - 1)][] = $this->semStack[$stackPos - (3 - 3)]; $this->semValue = $this->semStack[$stackPos - (3 - 1)]; - }, 231 => function ($stackPos) { + }, 233 => function ($stackPos) { $this->semValue = new Node\Param($this->semStack[$stackPos - (4 - 4)], null, $this->semStack[$stackPos - (4 - 1)], $this->semStack[$stackPos - (4 - 2)], $this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); $this->checkParam($this->semValue); - }, 232 => function ($stackPos) { + }, 234 => function ($stackPos) { $this->semValue = new Node\Param($this->semStack[$stackPos - (6 - 4)], $this->semStack[$stackPos - (6 - 6)], $this->semStack[$stackPos - (6 - 1)], $this->semStack[$stackPos - (6 - 2)], $this->semStack[$stackPos - (6 - 3)], $this->startAttributeStack[$stackPos - (6 - 1)] + $this->endAttributes); $this->checkParam($this->semValue); - }, 233 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 234 => function ($stackPos) { - $this->semValue = new Node\Identifier('array', $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); }, 235 => function ($stackPos) { - $this->semValue = new Node\Identifier('callable', $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); + $this->semValue = $this->semStack[$stackPos - (1 - 1)]; }, 236 => function ($stackPos) { - $this->semValue = null; + $this->semValue = new Node\Identifier('array', $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); }, 237 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos - (1 - 1)]; + $this->semValue = new Node\Identifier('callable', $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); }, 238 => function ($stackPos) { $this->semValue = null; }, 239 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos - (2 - 2)]; + $this->semValue = $this->semStack[$stackPos - (1 - 1)]; }, 240 => function ($stackPos) { - $this->semValue = array(); + $this->semValue = null; }, 241 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos - (3 - 2)]; + $this->semValue = $this->semStack[$stackPos - (2 - 2)]; }, 242 => function ($stackPos) { - $this->semValue = array(new Node\Arg($this->semStack[$stackPos - (3 - 2)], \false, \false, $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes)); + $this->semValue = array(); }, 243 => function ($stackPos) { - $this->semValue = array($this->semStack[$stackPos - (1 - 1)]); + $this->semValue = $this->semStack[$stackPos - (3 - 2)]; }, 244 => function ($stackPos) { + $this->semValue = array(new Node\Arg($this->semStack[$stackPos - (3 - 2)], \false, \false, $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes)); + }, 245 => function ($stackPos) { + $this->semValue = array($this->semStack[$stackPos - (1 - 1)]); + }, 246 => function ($stackPos) { $this->semStack[$stackPos - (3 - 1)][] = $this->semStack[$stackPos - (3 - 3)]; $this->semValue = $this->semStack[$stackPos - (3 - 1)]; - }, 245 => function ($stackPos) { + }, 247 => function ($stackPos) { $this->semValue = new Node\Arg($this->semStack[$stackPos - (1 - 1)], \false, \false, $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 246 => function ($stackPos) { + }, 248 => function ($stackPos) { $this->semValue = new Node\Arg($this->semStack[$stackPos - (2 - 2)], \true, \false, $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 247 => function ($stackPos) { + }, 249 => function ($stackPos) { $this->semValue = new Node\Arg($this->semStack[$stackPos - (2 - 2)], \false, \true, $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 248 => function ($stackPos) { + }, 250 => function ($stackPos) { $this->semStack[$stackPos - (3 - 1)][] = $this->semStack[$stackPos - (3 - 3)]; $this->semValue = $this->semStack[$stackPos - (3 - 1)]; - }, 249 => function ($stackPos) { + }, 251 => function ($stackPos) { $this->semValue = array($this->semStack[$stackPos - (1 - 1)]); - }, 250 => function ($stackPos) { + }, 252 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 251 => function ($stackPos) { + }, 253 => function ($stackPos) { $this->semValue = new Expr\Variable($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 252 => function ($stackPos) { + }, 254 => function ($stackPos) { $this->semValue = new Expr\Variable($this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 253 => function ($stackPos) { + }, 255 => function ($stackPos) { $this->semStack[$stackPos - (3 - 1)][] = $this->semStack[$stackPos - (3 - 3)]; $this->semValue = $this->semStack[$stackPos - (3 - 1)]; - }, 254 => function ($stackPos) { + }, 256 => function ($stackPos) { $this->semValue = array($this->semStack[$stackPos - (1 - 1)]); - }, 255 => function ($stackPos) { + }, 257 => function ($stackPos) { $this->semValue = new Stmt\StaticVar($this->semStack[$stackPos - (1 - 1)], null, $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 256 => function ($stackPos) { + }, 258 => function ($stackPos) { $this->semValue = new Stmt\StaticVar($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 257 => function ($stackPos) { + }, 259 => function ($stackPos) { if ($this->semStack[$stackPos - (2 - 2)] !== null) { $this->semStack[$stackPos - (2 - 1)][] = $this->semStack[$stackPos - (2 - 2)]; $this->semValue = $this->semStack[$stackPos - (2 - 1)]; } - }, 258 => function ($stackPos) { + }, 260 => function ($stackPos) { $this->semValue = array(); - }, 259 => function ($stackPos) { + }, 261 => function ($stackPos) { $startAttributes = $this->lookaheadStartAttributes; if (isset($startAttributes['comments'])) { $nop = new Stmt\Nop($this->createCommentNopAttributes($startAttributes['comments'])); @@ -16432,489 +16591,493 @@ class Php5 extends \PHPUnit\PhpParser\ParserAbstract $this->semStack[$stackPos - (1 - 1)][] = $nop; } $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 260 => function ($stackPos) { + }, 262 => function ($stackPos) { $this->semValue = new Stmt\Property($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 2)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); $this->checkProperty($this->semValue, $stackPos - (3 - 1)); - }, 261 => function ($stackPos) { + }, 263 => function ($stackPos) { $this->semValue = new Stmt\ClassConst($this->semStack[$stackPos - (3 - 2)], 0, $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 262 => function ($stackPos) { + }, 264 => function ($stackPos) { $this->semValue = new Stmt\ClassMethod($this->semStack[$stackPos - (9 - 4)], ['type' => $this->semStack[$stackPos - (9 - 1)], 'byRef' => $this->semStack[$stackPos - (9 - 3)], 'params' => $this->semStack[$stackPos - (9 - 6)], 'returnType' => $this->semStack[$stackPos - (9 - 8)], 'stmts' => $this->semStack[$stackPos - (9 - 9)]], $this->startAttributeStack[$stackPos - (9 - 1)] + $this->endAttributes); $this->checkClassMethod($this->semValue, $stackPos - (9 - 1)); - }, 263 => function ($stackPos) { - $this->semValue = new Stmt\TraitUse($this->semStack[$stackPos - (3 - 2)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 264 => function ($stackPos) { - $this->semValue = array(); }, 265 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos - (3 - 2)]; + $this->semValue = new Stmt\TraitUse($this->semStack[$stackPos - (3 - 2)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); }, 266 => function ($stackPos) { $this->semValue = array(); }, 267 => function ($stackPos) { + $this->semValue = $this->semStack[$stackPos - (3 - 2)]; + }, 268 => function ($stackPos) { + $this->semValue = array(); + }, 269 => function ($stackPos) { $this->semStack[$stackPos - (2 - 1)][] = $this->semStack[$stackPos - (2 - 2)]; $this->semValue = $this->semStack[$stackPos - (2 - 1)]; - }, 268 => function ($stackPos) { + }, 270 => function ($stackPos) { $this->semValue = new Stmt\TraitUseAdaptation\Precedence($this->semStack[$stackPos - (4 - 1)][0], $this->semStack[$stackPos - (4 - 1)][1], $this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 269 => function ($stackPos) { + }, 271 => function ($stackPos) { $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos - (5 - 1)][0], $this->semStack[$stackPos - (5 - 1)][1], $this->semStack[$stackPos - (5 - 3)], $this->semStack[$stackPos - (5 - 4)], $this->startAttributeStack[$stackPos - (5 - 1)] + $this->endAttributes); - }, 270 => function ($stackPos) { + }, 272 => function ($stackPos) { $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos - (4 - 1)][0], $this->semStack[$stackPos - (4 - 1)][1], $this->semStack[$stackPos - (4 - 3)], null, $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 271 => function ($stackPos) { + }, 273 => function ($stackPos) { $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos - (4 - 1)][0], $this->semStack[$stackPos - (4 - 1)][1], null, $this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 272 => function ($stackPos) { + }, 274 => function ($stackPos) { $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos - (4 - 1)][0], $this->semStack[$stackPos - (4 - 1)][1], null, $this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 273 => function ($stackPos) { + }, 275 => function ($stackPos) { $this->semValue = array($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)]); - }, 274 => function ($stackPos) { + }, 276 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 275 => function ($stackPos) { + }, 277 => function ($stackPos) { $this->semValue = array(null, $this->semStack[$stackPos - (1 - 1)]); - }, 276 => function ($stackPos) { + }, 278 => function ($stackPos) { $this->semValue = null; - }, 277 => function ($stackPos) { + }, 279 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (3 - 2)]; - }, 278 => function ($stackPos) { + }, 280 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 279 => function ($stackPos) { + }, 281 => function ($stackPos) { $this->semValue = 0; - }, 280 => function ($stackPos) { + }, 282 => function ($stackPos) { $this->semValue = 0; - }, 281 => function ($stackPos) { + }, 283 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 282 => function ($stackPos) { + }, 284 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 283 => function ($stackPos) { + }, 285 => function ($stackPos) { $this->checkModifier($this->semStack[$stackPos - (2 - 1)], $this->semStack[$stackPos - (2 - 2)], $stackPos - (2 - 2)); $this->semValue = $this->semStack[$stackPos - (2 - 1)] | $this->semStack[$stackPos - (2 - 2)]; - }, 284 => function ($stackPos) { + }, 286 => function ($stackPos) { $this->semValue = Stmt\Class_::MODIFIER_PUBLIC; - }, 285 => function ($stackPos) { + }, 287 => function ($stackPos) { $this->semValue = Stmt\Class_::MODIFIER_PROTECTED; - }, 286 => function ($stackPos) { + }, 288 => function ($stackPos) { $this->semValue = Stmt\Class_::MODIFIER_PRIVATE; - }, 287 => function ($stackPos) { + }, 289 => function ($stackPos) { $this->semValue = Stmt\Class_::MODIFIER_STATIC; - }, 288 => function ($stackPos) { + }, 290 => function ($stackPos) { $this->semValue = Stmt\Class_::MODIFIER_ABSTRACT; - }, 289 => function ($stackPos) { + }, 291 => function ($stackPos) { $this->semValue = Stmt\Class_::MODIFIER_FINAL; - }, 290 => function ($stackPos) { + }, 292 => function ($stackPos) { $this->semValue = array($this->semStack[$stackPos - (1 - 1)]); - }, 291 => function ($stackPos) { + }, 293 => function ($stackPos) { $this->semStack[$stackPos - (3 - 1)][] = $this->semStack[$stackPos - (3 - 3)]; $this->semValue = $this->semStack[$stackPos - (3 - 1)]; - }, 292 => function ($stackPos) { + }, 294 => function ($stackPos) { $this->semValue = new Node\VarLikeIdentifier(\substr($this->semStack[$stackPos - (1 - 1)], 1), $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 293 => function ($stackPos) { + }, 295 => function ($stackPos) { $this->semValue = new Stmt\PropertyProperty($this->semStack[$stackPos - (1 - 1)], null, $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 294 => function ($stackPos) { + }, 296 => function ($stackPos) { $this->semValue = new Stmt\PropertyProperty($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 295 => function ($stackPos) { + }, 297 => function ($stackPos) { $this->semStack[$stackPos - (3 - 1)][] = $this->semStack[$stackPos - (3 - 3)]; $this->semValue = $this->semStack[$stackPos - (3 - 1)]; - }, 296 => function ($stackPos) { + }, 298 => function ($stackPos) { $this->semValue = array($this->semStack[$stackPos - (1 - 1)]); - }, 297 => function ($stackPos) { + }, 299 => function ($stackPos) { $this->semValue = array(); - }, 298 => function ($stackPos) { + }, 300 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 299 => function ($stackPos) { + }, 301 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 300 => function ($stackPos) { + }, 302 => function ($stackPos) { $this->semValue = new Expr\Assign($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 301 => function ($stackPos) { + }, 303 => function ($stackPos) { $this->semValue = new Expr\Assign($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 302 => function ($stackPos) { + }, 304 => function ($stackPos) { $this->semValue = new Expr\AssignRef($this->semStack[$stackPos - (4 - 1)], $this->semStack[$stackPos - (4 - 4)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 303 => function ($stackPos) { + }, 305 => function ($stackPos) { $this->semValue = new Expr\AssignRef($this->semStack[$stackPos - (4 - 1)], $this->semStack[$stackPos - (4 - 4)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 304 => function ($stackPos) { + }, 306 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 305 => function ($stackPos) { + }, 307 => function ($stackPos) { $this->semValue = new Expr\Clone_($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 306 => function ($stackPos) { + }, 308 => function ($stackPos) { $this->semValue = new Expr\AssignOp\Plus($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 307 => function ($stackPos) { + }, 309 => function ($stackPos) { $this->semValue = new Expr\AssignOp\Minus($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 308 => function ($stackPos) { + }, 310 => function ($stackPos) { $this->semValue = new Expr\AssignOp\Mul($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 309 => function ($stackPos) { + }, 311 => function ($stackPos) { $this->semValue = new Expr\AssignOp\Div($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 310 => function ($stackPos) { + }, 312 => function ($stackPos) { $this->semValue = new Expr\AssignOp\Concat($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 311 => function ($stackPos) { + }, 313 => function ($stackPos) { $this->semValue = new Expr\AssignOp\Mod($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 312 => function ($stackPos) { + }, 314 => function ($stackPos) { $this->semValue = new Expr\AssignOp\BitwiseAnd($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 313 => function ($stackPos) { + }, 315 => function ($stackPos) { $this->semValue = new Expr\AssignOp\BitwiseOr($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 314 => function ($stackPos) { + }, 316 => function ($stackPos) { $this->semValue = new Expr\AssignOp\BitwiseXor($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 315 => function ($stackPos) { + }, 317 => function ($stackPos) { $this->semValue = new Expr\AssignOp\ShiftLeft($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 316 => function ($stackPos) { + }, 318 => function ($stackPos) { $this->semValue = new Expr\AssignOp\ShiftRight($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 317 => function ($stackPos) { + }, 319 => function ($stackPos) { $this->semValue = new Expr\AssignOp\Pow($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 318 => function ($stackPos) { + }, 320 => function ($stackPos) { $this->semValue = new Expr\AssignOp\Coalesce($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 319 => function ($stackPos) { + }, 321 => function ($stackPos) { $this->semValue = new Expr\PostInc($this->semStack[$stackPos - (2 - 1)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 320 => function ($stackPos) { + }, 322 => function ($stackPos) { $this->semValue = new Expr\PreInc($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 321 => function ($stackPos) { + }, 323 => function ($stackPos) { $this->semValue = new Expr\PostDec($this->semStack[$stackPos - (2 - 1)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 322 => function ($stackPos) { + }, 324 => function ($stackPos) { $this->semValue = new Expr\PreDec($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 323 => function ($stackPos) { + }, 325 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\BooleanOr($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 324 => function ($stackPos) { + }, 326 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\BooleanAnd($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 325 => function ($stackPos) { + }, 327 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\LogicalOr($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 326 => function ($stackPos) { + }, 328 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\LogicalAnd($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 327 => function ($stackPos) { + }, 329 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\LogicalXor($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 328 => function ($stackPos) { + }, 330 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\BitwiseOr($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 329 => function ($stackPos) { + }, 331 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\BitwiseAnd($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 330 => function ($stackPos) { + }, 332 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\BitwiseAnd($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 331 => function ($stackPos) { + }, 333 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\BitwiseXor($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 332 => function ($stackPos) { + }, 334 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\Concat($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 333 => function ($stackPos) { + }, 335 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\Plus($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 334 => function ($stackPos) { + }, 336 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\Minus($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 335 => function ($stackPos) { + }, 337 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\Mul($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 336 => function ($stackPos) { + }, 338 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\Div($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 337 => function ($stackPos) { + }, 339 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\Mod($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 338 => function ($stackPos) { + }, 340 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\ShiftLeft($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 339 => function ($stackPos) { + }, 341 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\ShiftRight($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 340 => function ($stackPos) { + }, 342 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\Pow($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 341 => function ($stackPos) { + }, 343 => function ($stackPos) { $this->semValue = new Expr\UnaryPlus($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 342 => function ($stackPos) { + }, 344 => function ($stackPos) { $this->semValue = new Expr\UnaryMinus($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 343 => function ($stackPos) { + }, 345 => function ($stackPos) { $this->semValue = new Expr\BooleanNot($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 344 => function ($stackPos) { + }, 346 => function ($stackPos) { $this->semValue = new Expr\BitwiseNot($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 345 => function ($stackPos) { + }, 347 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\Identical($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 346 => function ($stackPos) { + }, 348 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\NotIdentical($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 347 => function ($stackPos) { + }, 349 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\Equal($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 348 => function ($stackPos) { + }, 350 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\NotEqual($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 349 => function ($stackPos) { + }, 351 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\Spaceship($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 350 => function ($stackPos) { + }, 352 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\Smaller($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 351 => function ($stackPos) { + }, 353 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\SmallerOrEqual($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 352 => function ($stackPos) { + }, 354 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\Greater($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 353 => function ($stackPos) { + }, 355 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\GreaterOrEqual($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 354 => function ($stackPos) { + }, 356 => function ($stackPos) { $this->semValue = new Expr\Instanceof_($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 355 => function ($stackPos) { + }, 357 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 356 => function ($stackPos) { + }, 358 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (3 - 2)]; - }, 357 => function ($stackPos) { + }, 359 => function ($stackPos) { $this->semValue = new Expr\Ternary($this->semStack[$stackPos - (5 - 1)], $this->semStack[$stackPos - (5 - 3)], $this->semStack[$stackPos - (5 - 5)], $this->startAttributeStack[$stackPos - (5 - 1)] + $this->endAttributes); - }, 358 => function ($stackPos) { + }, 360 => function ($stackPos) { $this->semValue = new Expr\Ternary($this->semStack[$stackPos - (4 - 1)], null, $this->semStack[$stackPos - (4 - 4)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 359 => function ($stackPos) { + }, 361 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\Coalesce($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 360 => function ($stackPos) { + }, 362 => function ($stackPos) { $this->semValue = new Expr\Isset_($this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 361 => function ($stackPos) { + }, 363 => function ($stackPos) { $this->semValue = new Expr\Empty_($this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 362 => function ($stackPos) { + }, 364 => function ($stackPos) { $this->semValue = new Expr\Include_($this->semStack[$stackPos - (2 - 2)], Expr\Include_::TYPE_INCLUDE, $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 363 => function ($stackPos) { + }, 365 => function ($stackPos) { $this->semValue = new Expr\Include_($this->semStack[$stackPos - (2 - 2)], Expr\Include_::TYPE_INCLUDE_ONCE, $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 364 => function ($stackPos) { + }, 366 => function ($stackPos) { $this->semValue = new Expr\Eval_($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 365 => function ($stackPos) { + }, 367 => function ($stackPos) { $this->semValue = new Expr\Include_($this->semStack[$stackPos - (2 - 2)], Expr\Include_::TYPE_REQUIRE, $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 366 => function ($stackPos) { + }, 368 => function ($stackPos) { $this->semValue = new Expr\Include_($this->semStack[$stackPos - (2 - 2)], Expr\Include_::TYPE_REQUIRE_ONCE, $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 367 => function ($stackPos) { + }, 369 => function ($stackPos) { $this->semValue = new Expr\Cast\Int_($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 368 => function ($stackPos) { + }, 370 => function ($stackPos) { $attrs = $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes; $attrs['kind'] = $this->getFloatCastKind($this->semStack[$stackPos - (2 - 1)]); $this->semValue = new Expr\Cast\Double($this->semStack[$stackPos - (2 - 2)], $attrs); - }, 369 => function ($stackPos) { + }, 371 => function ($stackPos) { $this->semValue = new Expr\Cast\String_($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 370 => function ($stackPos) { + }, 372 => function ($stackPos) { $this->semValue = new Expr\Cast\Array_($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 371 => function ($stackPos) { + }, 373 => function ($stackPos) { $this->semValue = new Expr\Cast\Object_($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 372 => function ($stackPos) { + }, 374 => function ($stackPos) { $this->semValue = new Expr\Cast\Bool_($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 373 => function ($stackPos) { + }, 375 => function ($stackPos) { $this->semValue = new Expr\Cast\Unset_($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 374 => function ($stackPos) { + }, 376 => function ($stackPos) { $attrs = $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes; $attrs['kind'] = \strtolower($this->semStack[$stackPos - (2 - 1)]) === 'exit' ? Expr\Exit_::KIND_EXIT : Expr\Exit_::KIND_DIE; $this->semValue = new Expr\Exit_($this->semStack[$stackPos - (2 - 2)], $attrs); - }, 375 => function ($stackPos) { - $this->semValue = new Expr\ErrorSuppress($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 376 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos - (1 - 1)]; }, 377 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos - (1 - 1)]; + $this->semValue = new Expr\ErrorSuppress($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); }, 378 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; }, 379 => function ($stackPos) { - $this->semValue = new Expr\ShellExec($this->semStack[$stackPos - (3 - 2)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); + $this->semValue = $this->semStack[$stackPos - (1 - 1)]; }, 380 => function ($stackPos) { - $this->semValue = new Expr\Print_($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); + $this->semValue = $this->semStack[$stackPos - (1 - 1)]; }, 381 => function ($stackPos) { - $this->semValue = new Expr\Yield_(null, null, $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); + $this->semValue = new Expr\ShellExec($this->semStack[$stackPos - (3 - 2)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); }, 382 => function ($stackPos) { - $this->semValue = new Expr\YieldFrom($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); + $this->semValue = new Expr\Print_($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); }, 383 => function ($stackPos) { - $this->semValue = new Expr\Closure(['static' => \false, 'byRef' => $this->semStack[$stackPos - (10 - 2)], 'params' => $this->semStack[$stackPos - (10 - 4)], 'uses' => $this->semStack[$stackPos - (10 - 6)], 'returnType' => $this->semStack[$stackPos - (10 - 7)], 'stmts' => $this->semStack[$stackPos - (10 - 9)]], $this->startAttributeStack[$stackPos - (10 - 1)] + $this->endAttributes); + $this->semValue = new Expr\Yield_(null, null, $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); }, 384 => function ($stackPos) { - $this->semValue = new Expr\Closure(['static' => \true, 'byRef' => $this->semStack[$stackPos - (11 - 3)], 'params' => $this->semStack[$stackPos - (11 - 5)], 'uses' => $this->semStack[$stackPos - (11 - 7)], 'returnType' => $this->semStack[$stackPos - (11 - 8)], 'stmts' => $this->semStack[$stackPos - (11 - 10)]], $this->startAttributeStack[$stackPos - (11 - 1)] + $this->endAttributes); + $this->semValue = new Expr\YieldFrom($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); }, 385 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos - (3 - 2)]; + $this->semValue = new Expr\Closure(['static' => \false, 'byRef' => $this->semStack[$stackPos - (10 - 2)], 'params' => $this->semStack[$stackPos - (10 - 4)], 'uses' => $this->semStack[$stackPos - (10 - 6)], 'returnType' => $this->semStack[$stackPos - (10 - 7)], 'stmts' => $this->semStack[$stackPos - (10 - 9)]], $this->startAttributeStack[$stackPos - (10 - 1)] + $this->endAttributes); }, 386 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos - (3 - 2)]; + $this->semValue = new Expr\Closure(['static' => \true, 'byRef' => $this->semStack[$stackPos - (11 - 3)], 'params' => $this->semStack[$stackPos - (11 - 5)], 'uses' => $this->semStack[$stackPos - (11 - 7)], 'returnType' => $this->semStack[$stackPos - (11 - 8)], 'stmts' => $this->semStack[$stackPos - (11 - 10)]], $this->startAttributeStack[$stackPos - (11 - 1)] + $this->endAttributes); }, 387 => function ($stackPos) { - $this->semValue = new Expr\Yield_($this->semStack[$stackPos - (2 - 2)], null, $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); + $this->semValue = $this->semStack[$stackPos - (3 - 2)]; }, 388 => function ($stackPos) { - $this->semValue = new Expr\Yield_($this->semStack[$stackPos - (4 - 4)], $this->semStack[$stackPos - (4 - 2)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); + $this->semValue = $this->semStack[$stackPos - (3 - 2)]; }, 389 => function ($stackPos) { + $this->semValue = new Expr\Yield_($this->semStack[$stackPos - (2 - 2)], null, $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); + }, 390 => function ($stackPos) { + $this->semValue = new Expr\Yield_($this->semStack[$stackPos - (4 - 4)], $this->semStack[$stackPos - (4 - 2)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); + }, 391 => function ($stackPos) { $attrs = $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes; $attrs['kind'] = Expr\Array_::KIND_LONG; $this->semValue = new Expr\Array_($this->semStack[$stackPos - (4 - 3)], $attrs); - }, 390 => function ($stackPos) { + }, 392 => function ($stackPos) { $attrs = $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes; $attrs['kind'] = Expr\Array_::KIND_SHORT; $this->semValue = new Expr\Array_($this->semStack[$stackPos - (3 - 2)], $attrs); - }, 391 => function ($stackPos) { - $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos - (4 - 1)], $this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 392 => function ($stackPos) { - $this->semValue = new Expr\ArrayDimFetch(Scalar\String_::fromString($this->semStack[$stackPos - (4 - 1)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes), $this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); }, 393 => function ($stackPos) { $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos - (4 - 1)], $this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); }, 394 => function ($stackPos) { - $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos - (4 - 1)], $this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); + $this->semValue = new Expr\ArrayDimFetch(Scalar\String_::fromString($this->semStack[$stackPos - (4 - 1)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes), $this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); }, 395 => function ($stackPos) { + $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos - (4 - 1)], $this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); + }, 396 => function ($stackPos) { + $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos - (4 - 1)], $this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); + }, 397 => function ($stackPos) { $this->semValue = array(new Stmt\Class_(null, ['type' => 0, 'extends' => $this->semStack[$stackPos - (7 - 3)], 'implements' => $this->semStack[$stackPos - (7 - 4)], 'stmts' => $this->semStack[$stackPos - (7 - 6)]], $this->startAttributeStack[$stackPos - (7 - 1)] + $this->endAttributes), $this->semStack[$stackPos - (7 - 2)]); $this->checkClass($this->semValue[0], -1); - }, 396 => function ($stackPos) { + }, 398 => function ($stackPos) { $this->semValue = new Expr\New_($this->semStack[$stackPos - (3 - 2)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 397 => function ($stackPos) { + }, 399 => function ($stackPos) { list($class, $ctorArgs) = $this->semStack[$stackPos - (2 - 2)]; $this->semValue = new Expr\New_($class, $ctorArgs, $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 398 => function ($stackPos) { + }, 400 => function ($stackPos) { $this->semValue = array(); - }, 399 => function ($stackPos) { + }, 401 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (4 - 3)]; - }, 400 => function ($stackPos) { + }, 402 => function ($stackPos) { $this->semValue = array($this->semStack[$stackPos - (1 - 1)]); - }, 401 => function ($stackPos) { + }, 403 => function ($stackPos) { $this->semStack[$stackPos - (3 - 1)][] = $this->semStack[$stackPos - (3 - 3)]; $this->semValue = $this->semStack[$stackPos - (3 - 1)]; - }, 402 => function ($stackPos) { - $this->semValue = new Expr\ClosureUse($this->semStack[$stackPos - (2 - 2)], $this->semStack[$stackPos - (2 - 1)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 403 => function ($stackPos) { - $this->semValue = new Expr\FuncCall($this->semStack[$stackPos - (2 - 1)], $this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); }, 404 => function ($stackPos) { - $this->semValue = new Expr\StaticCall($this->semStack[$stackPos - (4 - 1)], $this->semStack[$stackPos - (4 - 3)], $this->semStack[$stackPos - (4 - 4)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); + $this->semValue = new Expr\ClosureUse($this->semStack[$stackPos - (2 - 2)], $this->semStack[$stackPos - (2 - 1)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); }, 405 => function ($stackPos) { - $this->semValue = new Expr\StaticCall($this->semStack[$stackPos - (6 - 1)], $this->semStack[$stackPos - (6 - 4)], $this->semStack[$stackPos - (6 - 6)], $this->startAttributeStack[$stackPos - (6 - 1)] + $this->endAttributes); + $this->semValue = new Name($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); }, 406 => function ($stackPos) { - $this->semValue = $this->fixupPhp5StaticPropCall($this->semStack[$stackPos - (2 - 1)], $this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); + $this->semValue = new Expr\FuncCall($this->semStack[$stackPos - (2 - 1)], $this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); }, 407 => function ($stackPos) { $this->semValue = new Expr\FuncCall($this->semStack[$stackPos - (2 - 1)], $this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); }, 408 => function ($stackPos) { - $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos - (4 - 1)], $this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); + $this->semValue = new Expr\StaticCall($this->semStack[$stackPos - (4 - 1)], $this->semStack[$stackPos - (4 - 3)], $this->semStack[$stackPos - (4 - 4)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); }, 409 => function ($stackPos) { - $this->semValue = new Name($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); + $this->semValue = new Expr\StaticCall($this->semStack[$stackPos - (6 - 1)], $this->semStack[$stackPos - (6 - 4)], $this->semStack[$stackPos - (6 - 6)], $this->startAttributeStack[$stackPos - (6 - 1)] + $this->endAttributes); }, 410 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos - (1 - 1)]; + $this->semValue = $this->fixupPhp5StaticPropCall($this->semStack[$stackPos - (2 - 1)], $this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); }, 411 => function ($stackPos) { - $this->semValue = new Name($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); + $this->semValue = new Expr\FuncCall($this->semStack[$stackPos - (2 - 1)], $this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); }, 412 => function ($stackPos) { - $this->semValue = new Name($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); + $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos - (4 - 1)], $this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); }, 413 => function ($stackPos) { - $this->semValue = new Name\FullyQualified(\substr($this->semStack[$stackPos - (1 - 1)], 1), $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); + $this->semValue = new Name($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); }, 414 => function ($stackPos) { - $this->semValue = new Name\Relative(\substr($this->semStack[$stackPos - (1 - 1)], 10), $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 415 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; + }, 415 => function ($stackPos) { + $this->semValue = new Name($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); }, 416 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos - (1 - 1)]; + $this->semValue = new Name($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); }, 417 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos - (1 - 1)]; + $this->semValue = new Name\FullyQualified(\substr($this->semStack[$stackPos - (1 - 1)], 1), $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); }, 418 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos - (1 - 1)]; + $this->semValue = new Name\Relative(\substr($this->semStack[$stackPos - (1 - 1)], 10), $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); }, 419 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; }, 420 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; }, 421 => function ($stackPos) { - $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); + $this->semValue = $this->semStack[$stackPos - (1 - 1)]; }, 422 => function ($stackPos) { - $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); + $this->semValue = $this->semStack[$stackPos - (1 - 1)]; }, 423 => function ($stackPos) { - $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos - (4 - 1)], $this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); + $this->semValue = $this->semStack[$stackPos - (1 - 1)]; }, 424 => function ($stackPos) { - $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos - (4 - 1)], $this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); + $this->semValue = $this->semStack[$stackPos - (1 - 1)]; }, 425 => function ($stackPos) { - $this->semValue = null; + $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); }, 426 => function ($stackPos) { - $this->semValue = null; + $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); }, 427 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos - (1 - 1)]; + $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos - (4 - 1)], $this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); }, 428 => function ($stackPos) { - $this->semValue = array(); + $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos - (4 - 1)], $this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); }, 429 => function ($stackPos) { - $this->semValue = array(new Scalar\EncapsedStringPart(Scalar\String_::parseEscapeSequences($this->semStack[$stackPos - (1 - 1)], '`', \false), $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes)); + $this->semValue = null; }, 430 => function ($stackPos) { + $this->semValue = null; + }, 431 => function ($stackPos) { + $this->semValue = $this->semStack[$stackPos - (1 - 1)]; + }, 432 => function ($stackPos) { + $this->semValue = array(); + }, 433 => function ($stackPos) { + $this->semValue = array(new Scalar\EncapsedStringPart(Scalar\String_::parseEscapeSequences($this->semStack[$stackPos - (1 - 1)], '`', \false), $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes)); + }, 434 => function ($stackPos) { foreach ($this->semStack[$stackPos - (1 - 1)] as $s) { if ($s instanceof Node\Scalar\EncapsedStringPart) { $s->value = Node\Scalar\String_::parseEscapeSequences($s->value, '`', \false); } } $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 431 => function ($stackPos) { + }, 435 => function ($stackPos) { $this->semValue = array(); - }, 432 => function ($stackPos) { + }, 436 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 433 => function ($stackPos) { + }, 437 => function ($stackPos) { $this->semValue = $this->parseLNumber($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes, \true); - }, 434 => function ($stackPos) { + }, 438 => function ($stackPos) { $this->semValue = Scalar\DNumber::fromString($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 435 => function ($stackPos) { + }, 439 => function ($stackPos) { $this->semValue = Scalar\String_::fromString($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes, \false); - }, 436 => function ($stackPos) { + }, 440 => function ($stackPos) { $this->semValue = new Scalar\MagicConst\Line($this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 437 => function ($stackPos) { + }, 441 => function ($stackPos) { $this->semValue = new Scalar\MagicConst\File($this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 438 => function ($stackPos) { + }, 442 => function ($stackPos) { $this->semValue = new Scalar\MagicConst\Dir($this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 439 => function ($stackPos) { + }, 443 => function ($stackPos) { $this->semValue = new Scalar\MagicConst\Class_($this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 440 => function ($stackPos) { + }, 444 => function ($stackPos) { $this->semValue = new Scalar\MagicConst\Trait_($this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 441 => function ($stackPos) { + }, 445 => function ($stackPos) { $this->semValue = new Scalar\MagicConst\Method($this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 442 => function ($stackPos) { + }, 446 => function ($stackPos) { $this->semValue = new Scalar\MagicConst\Function_($this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 443 => function ($stackPos) { + }, 447 => function ($stackPos) { $this->semValue = new Scalar\MagicConst\Namespace_($this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 444 => function ($stackPos) { + }, 448 => function ($stackPos) { $this->semValue = $this->parseDocString($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 2)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes, $this->startAttributeStack[$stackPos - (3 - 3)] + $this->endAttributeStack[$stackPos - (3 - 3)], \false); - }, 445 => function ($stackPos) { + }, 449 => function ($stackPos) { $this->semValue = $this->parseDocString($this->semStack[$stackPos - (2 - 1)], '', $this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes, $this->startAttributeStack[$stackPos - (2 - 2)] + $this->endAttributeStack[$stackPos - (2 - 2)], \false); - }, 446 => function ($stackPos) { + }, 450 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 447 => function ($stackPos) { + }, 451 => function ($stackPos) { $this->semValue = new Expr\ClassConstFetch($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 448 => function ($stackPos) { + }, 452 => function ($stackPos) { $this->semValue = new Expr\ConstFetch($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 449 => function ($stackPos) { + }, 453 => function ($stackPos) { $this->semValue = new Expr\Array_($this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 450 => function ($stackPos) { + }, 454 => function ($stackPos) { $this->semValue = new Expr\Array_($this->semStack[$stackPos - (3 - 2)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 451 => function ($stackPos) { + }, 455 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 452 => function ($stackPos) { + }, 456 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\BooleanOr($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 453 => function ($stackPos) { + }, 457 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\BooleanAnd($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 454 => function ($stackPos) { + }, 458 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\LogicalOr($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 455 => function ($stackPos) { + }, 459 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\LogicalAnd($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 456 => function ($stackPos) { + }, 460 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\LogicalXor($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 457 => function ($stackPos) { + }, 461 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\BitwiseOr($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 458 => function ($stackPos) { + }, 462 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\BitwiseAnd($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 459 => function ($stackPos) { + }, 463 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\BitwiseAnd($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 460 => function ($stackPos) { + }, 464 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\BitwiseXor($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 461 => function ($stackPos) { + }, 465 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\Concat($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 462 => function ($stackPos) { + }, 466 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\Plus($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 463 => function ($stackPos) { + }, 467 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\Minus($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 464 => function ($stackPos) { + }, 468 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\Mul($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 465 => function ($stackPos) { + }, 469 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\Div($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 466 => function ($stackPos) { + }, 470 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\Mod($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 467 => function ($stackPos) { + }, 471 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\ShiftLeft($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 468 => function ($stackPos) { + }, 472 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\ShiftRight($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 469 => function ($stackPos) { + }, 473 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\Pow($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 470 => function ($stackPos) { + }, 474 => function ($stackPos) { $this->semValue = new Expr\UnaryPlus($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 471 => function ($stackPos) { + }, 475 => function ($stackPos) { $this->semValue = new Expr\UnaryMinus($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 472 => function ($stackPos) { + }, 476 => function ($stackPos) { $this->semValue = new Expr\BooleanNot($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 473 => function ($stackPos) { + }, 477 => function ($stackPos) { $this->semValue = new Expr\BitwiseNot($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 474 => function ($stackPos) { + }, 478 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\Identical($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 475 => function ($stackPos) { + }, 479 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\NotIdentical($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 476 => function ($stackPos) { + }, 480 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\Equal($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 477 => function ($stackPos) { + }, 481 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\NotEqual($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 478 => function ($stackPos) { + }, 482 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\Smaller($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 479 => function ($stackPos) { + }, 483 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\SmallerOrEqual($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 480 => function ($stackPos) { + }, 484 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\Greater($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 481 => function ($stackPos) { + }, 485 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\GreaterOrEqual($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 482 => function ($stackPos) { + }, 486 => function ($stackPos) { $this->semValue = new Expr\Ternary($this->semStack[$stackPos - (5 - 1)], $this->semStack[$stackPos - (5 - 3)], $this->semStack[$stackPos - (5 - 5)], $this->startAttributeStack[$stackPos - (5 - 1)] + $this->endAttributes); - }, 483 => function ($stackPos) { + }, 487 => function ($stackPos) { $this->semValue = new Expr\Ternary($this->semStack[$stackPos - (4 - 1)], null, $this->semStack[$stackPos - (4 - 4)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 484 => function ($stackPos) { + }, 488 => function ($stackPos) { $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos - (4 - 1)], $this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 485 => function ($stackPos) { + }, 489 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (3 - 2)]; - }, 486 => function ($stackPos) { + }, 490 => function ($stackPos) { $this->semValue = new Expr\ConstFetch($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 487 => function ($stackPos) { + }, 491 => function ($stackPos) { $this->semValue = new Expr\ClassConstFetch($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 488 => function ($stackPos) { + }, 492 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 489 => function ($stackPos) { + }, 493 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 490 => function ($stackPos) { + }, 494 => function ($stackPos) { $attrs = $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes; $attrs['kind'] = Scalar\String_::KIND_DOUBLE_QUOTED; foreach ($this->semStack[$stackPos - (3 - 2)] as $s) { @@ -16923,160 +17086,160 @@ class Php5 extends \PHPUnit\PhpParser\ParserAbstract } } $this->semValue = new Scalar\Encapsed($this->semStack[$stackPos - (3 - 2)], $attrs); - }, 491 => function ($stackPos) { + }, 495 => function ($stackPos) { $this->semValue = $this->parseDocString($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 2)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes, $this->startAttributeStack[$stackPos - (3 - 3)] + $this->endAttributeStack[$stackPos - (3 - 3)], \true); - }, 492 => function ($stackPos) { + }, 496 => function ($stackPos) { $this->semValue = array(); - }, 493 => function ($stackPos) { + }, 497 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (2 - 1)]; - }, 494 => function ($stackPos) { + }, 498 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos]; - }, 495 => function ($stackPos) { + }, 499 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos]; - }, 496 => function ($stackPos) { + }, 500 => function ($stackPos) { $this->semStack[$stackPos - (3 - 1)][] = $this->semStack[$stackPos - (3 - 3)]; $this->semValue = $this->semStack[$stackPos - (3 - 1)]; - }, 497 => function ($stackPos) { + }, 501 => function ($stackPos) { $this->semValue = array($this->semStack[$stackPos - (1 - 1)]); - }, 498 => function ($stackPos) { + }, 502 => function ($stackPos) { $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos - (3 - 3)], $this->semStack[$stackPos - (3 - 1)], \false, $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 499 => function ($stackPos) { + }, 503 => function ($stackPos) { $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos - (1 - 1)], null, \false, $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 500 => function ($stackPos) { + }, 504 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 501 => function ($stackPos) { + }, 505 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 502 => function ($stackPos) { + }, 506 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 503 => function ($stackPos) { + }, 507 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 504 => function ($stackPos) { + }, 508 => function ($stackPos) { $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos - (6 - 2)], $this->semStack[$stackPos - (6 - 5)], $this->startAttributeStack[$stackPos - (6 - 1)] + $this->endAttributes); - }, 505 => function ($stackPos) { + }, 509 => function ($stackPos) { $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos - (4 - 1)], $this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 506 => function ($stackPos) { + }, 510 => function ($stackPos) { $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 507 => function ($stackPos) { + }, 511 => function ($stackPos) { $this->semValue = new Expr\MethodCall($this->semStack[$stackPos - (4 - 1)], $this->semStack[$stackPos - (4 - 3)], $this->semStack[$stackPos - (4 - 4)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 508 => function ($stackPos) { + }, 512 => function ($stackPos) { $this->semValue = new Expr\FuncCall($this->semStack[$stackPos - (2 - 1)], $this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 509 => function ($stackPos) { + }, 513 => function ($stackPos) { $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos - (4 - 1)], $this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 510 => function ($stackPos) { + }, 514 => function ($stackPos) { $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos - (4 - 1)], $this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 511 => function ($stackPos) { + }, 515 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 512 => function ($stackPos) { + }, 516 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (3 - 2)]; - }, 513 => function ($stackPos) { + }, 517 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 514 => function ($stackPos) { + }, 518 => function ($stackPos) { $this->semValue = new Expr\Variable($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 515 => function ($stackPos) { + }, 519 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 516 => function ($stackPos) { + }, 520 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 517 => function ($stackPos) { + }, 521 => function ($stackPos) { $this->semValue = new Expr\StaticPropertyFetch($this->semStack[$stackPos - (4 - 1)], $this->semStack[$stackPos - (4 - 4)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 518 => function ($stackPos) { + }, 522 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 519 => function ($stackPos) { + }, 523 => function ($stackPos) { $var = \substr($this->semStack[$stackPos - (1 - 1)], 1); $this->semValue = \is_string($var) ? new Node\VarLikeIdentifier($var, $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes) : $var; - }, 520 => function ($stackPos) { + }, 524 => function ($stackPos) { $this->semValue = new Expr\StaticPropertyFetch($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 521 => function ($stackPos) { + }, 525 => function ($stackPos) { $this->semValue = new Expr\StaticPropertyFetch($this->semStack[$stackPos - (6 - 1)], $this->semStack[$stackPos - (6 - 5)], $this->startAttributeStack[$stackPos - (6 - 1)] + $this->endAttributes); - }, 522 => function ($stackPos) { + }, 526 => function ($stackPos) { $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos - (4 - 1)], $this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 523 => function ($stackPos) { + }, 527 => function ($stackPos) { $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos - (4 - 1)], $this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 524 => function ($stackPos) { + }, 528 => function ($stackPos) { $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos - (4 - 1)], $this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 525 => function ($stackPos) { + }, 529 => function ($stackPos) { $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos - (4 - 1)], $this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 526 => function ($stackPos) { + }, 530 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 527 => function ($stackPos) { + }, 531 => function ($stackPos) { $this->semValue = new Expr\Variable($this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 528 => function ($stackPos) { + }, 532 => function ($stackPos) { $this->semValue = null; - }, 529 => function ($stackPos) { + }, 533 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 530 => function ($stackPos) { + }, 534 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 531 => function ($stackPos) { + }, 535 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (3 - 2)]; - }, 532 => function ($stackPos) { + }, 536 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 533 => function ($stackPos) { + }, 537 => function ($stackPos) { $this->semValue = new Expr\Error($this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); $this->errorState = 2; - }, 534 => function ($stackPos) { + }, 538 => function ($stackPos) { $this->semValue = new Expr\List_($this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 535 => function ($stackPos) { + }, 539 => function ($stackPos) { $this->semStack[$stackPos - (3 - 1)][] = $this->semStack[$stackPos - (3 - 3)]; $this->semValue = $this->semStack[$stackPos - (3 - 1)]; - }, 536 => function ($stackPos) { + }, 540 => function ($stackPos) { $this->semValue = array($this->semStack[$stackPos - (1 - 1)]); - }, 537 => function ($stackPos) { + }, 541 => function ($stackPos) { $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos - (1 - 1)], null, \false, $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 538 => function ($stackPos) { + }, 542 => function ($stackPos) { $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos - (1 - 1)], null, \false, $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 539 => function ($stackPos) { + }, 543 => function ($stackPos) { $this->semValue = null; - }, 540 => function ($stackPos) { + }, 544 => function ($stackPos) { $this->semValue = array(); - }, 541 => function ($stackPos) { + }, 545 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (2 - 1)]; - }, 542 => function ($stackPos) { + }, 546 => function ($stackPos) { $this->semStack[$stackPos - (3 - 1)][] = $this->semStack[$stackPos - (3 - 3)]; $this->semValue = $this->semStack[$stackPos - (3 - 1)]; - }, 543 => function ($stackPos) { + }, 547 => function ($stackPos) { $this->semValue = array($this->semStack[$stackPos - (1 - 1)]); - }, 544 => function ($stackPos) { + }, 548 => function ($stackPos) { $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos - (3 - 3)], $this->semStack[$stackPos - (3 - 1)], \false, $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 545 => function ($stackPos) { + }, 549 => function ($stackPos) { $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos - (1 - 1)], null, \false, $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 546 => function ($stackPos) { + }, 550 => function ($stackPos) { $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos - (4 - 4)], $this->semStack[$stackPos - (4 - 1)], \true, $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 547 => function ($stackPos) { + }, 551 => function ($stackPos) { $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos - (2 - 2)], null, \true, $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 548 => function ($stackPos) { - $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos - (2 - 2)], null, \false, $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes, \true, $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 549 => function ($stackPos) { + }, 552 => function ($stackPos) { + $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos - (2 - 2)], null, \false, $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes, \true); + }, 553 => function ($stackPos) { $this->semStack[$stackPos - (2 - 1)][] = $this->semStack[$stackPos - (2 - 2)]; $this->semValue = $this->semStack[$stackPos - (2 - 1)]; - }, 550 => function ($stackPos) { + }, 554 => function ($stackPos) { $this->semStack[$stackPos - (2 - 1)][] = $this->semStack[$stackPos - (2 - 2)]; $this->semValue = $this->semStack[$stackPos - (2 - 1)]; - }, 551 => function ($stackPos) { + }, 555 => function ($stackPos) { $this->semValue = array($this->semStack[$stackPos - (1 - 1)]); - }, 552 => function ($stackPos) { + }, 556 => function ($stackPos) { $this->semValue = array($this->semStack[$stackPos - (2 - 1)], $this->semStack[$stackPos - (2 - 2)]); - }, 553 => function ($stackPos) { + }, 557 => function ($stackPos) { $this->semValue = new Scalar\EncapsedStringPart($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 554 => function ($stackPos) { + }, 558 => function ($stackPos) { $this->semValue = new Expr\Variable($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 555 => function ($stackPos) { + }, 559 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 556 => function ($stackPos) { + }, 560 => function ($stackPos) { $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos - (4 - 1)], $this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 557 => function ($stackPos) { + }, 561 => function ($stackPos) { $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 558 => function ($stackPos) { + }, 562 => function ($stackPos) { $this->semValue = new Expr\Variable($this->semStack[$stackPos - (3 - 2)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 559 => function ($stackPos) { + }, 563 => function ($stackPos) { $this->semValue = new Expr\Variable($this->semStack[$stackPos - (3 - 2)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 560 => function ($stackPos) { + }, 564 => function ($stackPos) { $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos - (6 - 2)], $this->semStack[$stackPos - (6 - 4)], $this->startAttributeStack[$stackPos - (6 - 1)] + $this->endAttributes); - }, 561 => function ($stackPos) { + }, 565 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (3 - 2)]; - }, 562 => function ($stackPos) { + }, 566 => function ($stackPos) { $this->semValue = new Scalar\String_($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 563 => function ($stackPos) { + }, 567 => function ($stackPos) { $this->semValue = $this->parseNumString($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 564 => function ($stackPos) { + }, 568 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; }]; } @@ -17100,26 +17263,26 @@ use PHPUnit\PhpParser\Node\Stmt; class Php7 extends \PHPUnit\PhpParser\ParserAbstract { protected $tokenToSymbolMapSize = 396; - protected $actionTableSize = 1217; - protected $gotoTableSize = 604; + protected $actionTableSize = 1241; + protected $gotoTableSize = 629; protected $invalidSymbol = 168; protected $errorSymbol = 1; protected $defaultAction = -32766; protected $unexpectedTokenRule = 32767; - protected $YY2TBLSTATE = 429; - protected $numNonLeafStates = 717; + protected $YY2TBLSTATE = 434; + protected $numNonLeafStates = 736; protected $symbolToName = array("EOF", "error", "T_THROW", "T_INCLUDE", "T_INCLUDE_ONCE", "T_EVAL", "T_REQUIRE", "T_REQUIRE_ONCE", "','", "T_LOGICAL_OR", "T_LOGICAL_XOR", "T_LOGICAL_AND", "T_PRINT", "T_YIELD", "T_DOUBLE_ARROW", "T_YIELD_FROM", "'='", "T_PLUS_EQUAL", "T_MINUS_EQUAL", "T_MUL_EQUAL", "T_DIV_EQUAL", "T_CONCAT_EQUAL", "T_MOD_EQUAL", "T_AND_EQUAL", "T_OR_EQUAL", "T_XOR_EQUAL", "T_SL_EQUAL", "T_SR_EQUAL", "T_POW_EQUAL", "T_COALESCE_EQUAL", "'?'", "':'", "T_COALESCE", "T_BOOLEAN_OR", "T_BOOLEAN_AND", "'|'", "'^'", "T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG", "T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG", "T_IS_EQUAL", "T_IS_NOT_EQUAL", "T_IS_IDENTICAL", "T_IS_NOT_IDENTICAL", "T_SPACESHIP", "'<'", "T_IS_SMALLER_OR_EQUAL", "'>'", "T_IS_GREATER_OR_EQUAL", "T_SL", "T_SR", "'+'", "'-'", "'.'", "'*'", "'/'", "'%'", "'!'", "T_INSTANCEOF", "'~'", "T_INC", "T_DEC", "T_INT_CAST", "T_DOUBLE_CAST", "T_STRING_CAST", "T_ARRAY_CAST", "T_OBJECT_CAST", "T_BOOL_CAST", "T_UNSET_CAST", "'@'", "T_POW", "'['", "T_NEW", "T_CLONE", "T_EXIT", "T_IF", "T_ELSEIF", "T_ELSE", "T_ENDIF", "T_LNUMBER", "T_DNUMBER", "T_STRING", "T_STRING_VARNAME", "T_VARIABLE", "T_NUM_STRING", "T_INLINE_HTML", "T_ENCAPSED_AND_WHITESPACE", "T_CONSTANT_ENCAPSED_STRING", "T_ECHO", "T_DO", "T_WHILE", "T_ENDWHILE", "T_FOR", "T_ENDFOR", "T_FOREACH", "T_ENDFOREACH", "T_DECLARE", "T_ENDDECLARE", "T_AS", "T_SWITCH", "T_MATCH", "T_ENDSWITCH", "T_CASE", "T_DEFAULT", "T_BREAK", "T_CONTINUE", "T_GOTO", "T_FUNCTION", "T_FN", "T_CONST", "T_RETURN", "T_TRY", "T_CATCH", "T_FINALLY", "T_USE", "T_INSTEADOF", "T_GLOBAL", "T_STATIC", "T_ABSTRACT", "T_FINAL", "T_PRIVATE", "T_PROTECTED", "T_PUBLIC", "T_READONLY", "T_VAR", "T_UNSET", "T_ISSET", "T_EMPTY", "T_HALT_COMPILER", "T_CLASS", "T_TRAIT", "T_INTERFACE", "T_ENUM", "T_EXTENDS", "T_IMPLEMENTS", "T_OBJECT_OPERATOR", "T_NULLSAFE_OBJECT_OPERATOR", "T_LIST", "T_ARRAY", "T_CALLABLE", "T_CLASS_C", "T_TRAIT_C", "T_METHOD_C", "T_FUNC_C", "T_LINE", "T_FILE", "T_START_HEREDOC", "T_END_HEREDOC", "T_DOLLAR_OPEN_CURLY_BRACES", "T_CURLY_OPEN", "T_PAAMAYIM_NEKUDOTAYIM", "T_NAMESPACE", "T_NS_C", "T_DIR", "T_NS_SEPARATOR", "T_ELLIPSIS", "T_NAME_FULLY_QUALIFIED", "T_NAME_QUALIFIED", "T_NAME_RELATIVE", "T_ATTRIBUTE", "';'", "']'", "'{'", "'}'", "'('", "')'", "'`'", "'\"'", "'\$'"); protected $tokenToSymbol = array(0, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 56, 166, 168, 167, 55, 168, 168, 163, 164, 53, 50, 8, 51, 52, 54, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 31, 159, 44, 16, 46, 30, 68, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 70, 168, 160, 36, 168, 165, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 161, 35, 162, 58, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 32, 33, 34, 37, 38, 39, 40, 41, 42, 43, 45, 47, 48, 49, 57, 59, 60, 61, 62, 63, 64, 65, 66, 67, 69, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158); - protected $action = array(132, 133, 134, 570, 135, 136, 0, 729, 730, 731, 137, 37, 929, 450, 451, 452, -32766, -32766, -32766, -32767, -32767, -32767, -32767, 101, 102, 103, 104, 105, 1085, 1086, 1087, 1084, 1083, 1082, 1088, 723, 722, -32766, 1275, -32766, -32766, -32766, -32766, -32766, -32766, -32766, -32767, -32767, -32767, -32767, -32767, 373, 374, 918, 2, 732, -32766, -32766, -32766, 1001, 472, 417, 150, -32766, -32766, -32766, 375, 374, 12, 267, 138, 399, 736, 737, 738, 739, 417, -32766, 423, -32766, -32766, -32766, -32766, -32766, -32766, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 770, 571, 771, 772, 773, 774, 762, 763, 339, 340, 765, 766, 751, 752, 753, 755, 756, 757, 349, 797, 798, 799, 800, 801, 802, 758, 759, 572, 573, 791, 782, 780, 781, 794, 777, 778, 323, 423, 574, 575, 776, 576, 577, 578, 579, 580, 581, -324, -585, 810, 34, 805, 779, 582, 583, -585, 139, -32766, -32766, -32766, 132, 133, 134, 570, 135, 136, 1034, 729, 730, 731, 137, 37, -32766, -32766, -32766, 544, 814, 126, -32766, 1310, -32766, -32766, -32766, -32766, -32766, -32766, -32766, 1085, 1086, 1087, 1084, 1083, 1082, 1088, 473, 723, 722, -32766, -32766, -32766, 458, 459, 81, -32766, -32766, -32766, -193, -192, 322, 898, 240, 599, 1210, 1209, 1211, 732, 816, 703, -32766, 1063, -32766, -32766, -32766, -32766, -32766, 811, -32766, -32766, -32766, 267, 138, 399, 736, 737, 738, 739, 1247, 1295, 423, 694, 1320, 35, 249, 1321, 1294, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 770, 571, 771, 772, 773, 774, 762, 763, 339, 340, 765, 766, 751, 752, 753, 755, 756, 757, 349, 797, 798, 799, 800, 801, 802, 758, 759, 572, 573, 791, 782, 780, 781, 794, 777, 778, 888, 593, 574, 575, 776, 576, 577, 578, 579, 580, 581, -324, 82, 83, 84, -585, 779, 582, 583, -585, 148, 754, 724, 725, 726, 727, 728, -582, 729, 730, 731, 767, 768, 36, -582, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, -362, 271, -362, -32766, -32766, -32766, 106, 107, 108, -268, 271, -193, -192, 109, 933, 934, 900, 732, 689, 935, 14, 288, 109, 815, -32766, 1061, -32766, -32766, 964, -86, 288, 733, 734, 735, 736, 737, 738, 739, 239, 384, 803, 11, 1077, -539, -32766, -32766, -32766, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 770, 793, 771, 772, 773, 774, 762, 763, 764, 792, 765, 766, 751, 752, 753, 755, 756, 757, 796, 797, 798, 799, 800, 801, 802, 758, 759, 760, 761, 791, 782, 780, 781, 794, 777, 778, 128, -86, 769, 775, 776, 783, 784, 786, 785, 787, 788, -576, 144, -539, -539, -576, 779, 790, 789, 49, 50, 51, 503, 52, 53, 997, 996, 995, 998, 54, 55, -111, 56, -582, 1033, 1010, -111, -582, -111, 1291, -539, -32766, -32766, 302, 1010, 1010, -111, -111, -111, -111, -111, -111, -111, -111, 1208, 841, 898, 842, 253, 807, 287, 306, 965, 284, 898, 723, 722, 57, 58, 287, 287, 1007, -536, 59, 308, 60, 246, 247, 61, 62, 63, 64, 65, 66, 67, 68, 695, 27, 269, 69, 439, 504, -338, 1010, 696, 1241, 1242, 505, 898, 814, 640, 25, 898, 1239, 41, 24, 506, 320, 507, 1235, 508, 1009, 509, 149, 402, 510, 511, 841, 805, 842, 43, 44, 440, 370, 369, 898, 45, 512, 698, 1210, 1209, 1211, 361, 335, 1215, 809, -536, -536, 336, 888, 691, 513, 514, 515, 1215, 1007, 1062, 888, 715, 1007, 337, -536, 363, 516, 517, 705, 1229, 1230, 1231, 1232, 1226, 1227, 294, -536, -16, -542, 813, 1010, 1233, 1228, 367, 1010, 1210, 1209, 1211, 295, -153, -153, -153, 382, 70, 888, 318, 319, 322, 888, 659, 660, -535, 1206, 814, -153, 279, -153, 435, -153, 279, -153, 436, 141, 103, 104, 105, 632, 633, 322, 437, 368, 888, -32766, -32766, 371, 372, 438, 900, 814, 689, 820, -111, -111, 376, 377, 950, -111, 689, 814, -88, 151, 874, -111, -111, -111, -111, 31, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 723, 722, 1206, 153, 154, -535, -535, 155, 898, 900, 157, 689, 1206, 900, -111, 689, -153, 32, 123, 898, -535, 124, 140, -32766, -537, 129, 130, 143, 322, 1122, 1124, 158, -535, -32766, -541, -534, 900, -32766, 689, 159, -534, 723, 722, 1208, 295, 160, 161, -79, -75, 74, -32766, -32766, -32766, 322, -32766, -73, -32766, -298, -32766, 74, -294, -32766, -72, 322, -71, -70, -32766, -32766, -32766, -69, -68, -67, -32766, -32766, 27, -66, -47, 1215, -32766, 414, -18, 147, 275, 270, 281, 704, 814, -32766, -537, -537, 1239, 888, 707, 897, 146, 276, 48, -4, 898, -534, -534, 282, 888, -537, -534, -534, 283, -246, -246, -246, 329, 285, 271, 368, -534, -537, 286, 73, 289, -534, 1206, 47, 723, 722, -111, -111, -534, 290, 109, -111, 914, -534, 550, 669, 874, -111, -111, -111, -111, 145, 516, 517, -32766, 1229, 1230, 1231, 1232, 1226, 1227, 814, 805, 1322, 662, 300, 1092, 1233, 1228, 682, 814, -32766, 298, 299, 546, 641, 647, 1208, 900, 72, 689, -246, 319, 322, -32766, -32766, -32766, 366, -32766, 900, -32766, 689, -32766, 888, 646, -32766, 13, 296, 297, 127, -32766, -32766, -32766, 455, 1206, -51, -32766, -32766, 483, 630, 663, 556, -32766, 414, 303, 368, -111, 430, 434, 39, 930, -32766, 293, 0, 125, -32766, -111, -111, 301, 0, 0, -111, 1010, 307, 0, 0, 833, -111, -111, -111, -111, 0, -32766, 131, 0, 0, 295, 0, -32766, 1246, 0, 74, 0, 1248, 1208, 322, 0, -500, 0, 9, 0, -32766, -32766, -32766, -490, -32766, 7, -32766, 900, -32766, 689, -4, -32766, 16, 365, 597, 813, -32766, -32766, -32766, 916, 295, 709, -32766, -32766, 1240, -32766, 40, 712, -32766, 414, 713, 1208, 879, 898, 974, 951, 958, -32766, -32766, -32766, -32766, 948, -32766, 959, -32766, 877, -32766, 946, 1066, -32766, 1069, 1070, 1067, 1068, -32766, -32766, -32766, -32766, 1074, 33, -32766, -32766, 1236, 1208, 825, 1261, -32766, 414, 1279, 1313, -32766, -32766, -32766, 317, -32766, -32766, -32766, 635, -32766, 364, 690, -32766, 693, 697, 699, 478, -32766, -32766, -32766, -32766, 700, 701, -32766, -32766, 702, 1208, 562, 706, -32766, 414, 692, -570, -32766, -32766, -32766, 875, -32766, -32766, -32766, 1317, -32766, 1319, 836, -32766, 835, 844, 888, 923, -32766, -32766, -32766, 966, 843, 1318, -32766, -32766, 922, 924, 921, 1194, -32766, 414, -245, -245, -245, 907, 917, 905, 368, -32766, 956, 957, 1316, 1273, 1262, 0, 1280, 1286, 1289, -111, -111, -568, 27, -542, -111, -541, -540, 1, 28, 874, -111, -111, -111, -111, 814, 29, -32766, 38, 1239, 42, 46, 71, 1208, 75, 76, 77, 78, 79, 0, -32766, -32766, -32766, 80, -32766, 142, -32766, 152, -32766, 156, 245, -32766, 900, 324, 689, -245, -32766, -32766, -32766, 1206, 350, 351, -32766, -32766, 352, 353, 354, 355, -32766, 414, 356, 357, 358, 359, 360, 362, 431, -32766, -271, -269, 517, -268, 1229, 1230, 1231, 1232, 1226, 1227, 18, 19, 20, 21, 23, 401, 1233, 1228, 474, 475, 482, 485, 486, 487, 488, 492, 493, 494, 72, -504, 501, 319, 322, 676, 1219, 1162, 1237, 1036, 1035, 0, 1016, 1198, 1012, -273, -103, 17, 22, 26, 292, 400, 590, 594, 621, 681, 1166, 1214, 1163, 1292, 0, 1179, 0, 0, 322); - protected $actionCheck = array(2, 3, 4, 5, 6, 7, 0, 9, 10, 11, 12, 13, 128, 129, 130, 131, 9, 10, 11, 44, 45, 46, 47, 48, 49, 50, 51, 52, 116, 117, 118, 119, 120, 121, 122, 37, 38, 30, 1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 106, 107, 1, 8, 57, 9, 10, 11, 1, 31, 116, 14, 9, 10, 11, 106, 107, 8, 71, 72, 73, 74, 75, 76, 77, 116, 30, 80, 32, 33, 34, 35, 36, 30, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 70, 80, 136, 137, 138, 139, 140, 141, 142, 143, 144, 8, 1, 80, 8, 80, 150, 151, 152, 8, 154, 9, 10, 11, 2, 3, 4, 5, 6, 7, 164, 9, 10, 11, 12, 13, 9, 10, 11, 85, 82, 14, 30, 85, 32, 33, 34, 35, 36, 37, 38, 116, 117, 118, 119, 120, 121, 122, 161, 37, 38, 9, 10, 11, 134, 135, 161, 9, 10, 11, 8, 8, 167, 1, 14, 51, 155, 156, 157, 57, 1, 161, 30, 162, 32, 33, 34, 35, 30, 156, 32, 33, 34, 71, 72, 73, 74, 75, 76, 77, 146, 1, 80, 31, 80, 147, 148, 83, 8, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 84, 1, 136, 137, 138, 139, 140, 141, 142, 143, 144, 164, 9, 10, 11, 160, 150, 151, 152, 164, 154, 2, 3, 4, 5, 6, 7, 1, 9, 10, 11, 12, 13, 30, 8, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 106, 57, 108, 9, 10, 11, 53, 54, 55, 164, 57, 164, 164, 69, 117, 118, 159, 57, 161, 122, 101, 30, 69, 159, 30, 1, 32, 33, 31, 31, 30, 71, 72, 73, 74, 75, 76, 77, 97, 106, 80, 108, 123, 70, 9, 10, 11, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 8, 97, 136, 137, 138, 139, 140, 141, 142, 143, 144, 160, 8, 134, 135, 164, 150, 151, 152, 2, 3, 4, 5, 6, 7, 119, 120, 121, 122, 12, 13, 101, 15, 160, 1, 138, 106, 164, 108, 1, 161, 9, 10, 113, 138, 138, 116, 117, 118, 119, 120, 121, 122, 123, 80, 106, 1, 108, 8, 80, 163, 8, 159, 30, 1, 37, 38, 50, 51, 163, 163, 116, 70, 56, 8, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 31, 70, 71, 72, 73, 74, 162, 138, 31, 78, 79, 80, 1, 82, 75, 76, 1, 86, 87, 88, 89, 8, 91, 1, 93, 137, 95, 101, 102, 98, 99, 106, 80, 108, 103, 104, 105, 106, 107, 1, 109, 110, 31, 155, 156, 157, 115, 116, 1, 156, 134, 135, 8, 84, 161, 124, 125, 126, 1, 116, 159, 84, 161, 116, 8, 149, 8, 136, 137, 31, 139, 140, 141, 142, 143, 144, 145, 161, 31, 163, 155, 138, 151, 152, 8, 138, 155, 156, 157, 158, 75, 76, 77, 8, 163, 84, 165, 166, 167, 84, 75, 76, 70, 116, 82, 90, 163, 92, 8, 94, 163, 96, 8, 161, 50, 51, 52, 111, 112, 167, 8, 106, 84, 9, 137, 106, 107, 8, 159, 82, 161, 8, 117, 118, 106, 107, 159, 122, 161, 82, 31, 14, 127, 128, 129, 130, 131, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 37, 38, 116, 14, 14, 134, 135, 14, 1, 159, 14, 161, 116, 159, 128, 161, 162, 14, 16, 1, 149, 16, 161, 137, 70, 16, 16, 16, 167, 59, 60, 16, 161, 137, 163, 70, 159, 74, 161, 16, 70, 37, 38, 80, 158, 16, 16, 31, 31, 163, 87, 88, 89, 167, 91, 31, 93, 35, 95, 163, 35, 98, 31, 167, 31, 31, 103, 104, 105, 31, 31, 31, 109, 110, 70, 31, 31, 1, 115, 116, 31, 31, 35, 31, 31, 31, 82, 124, 134, 135, 86, 84, 31, 31, 31, 35, 70, 0, 1, 134, 135, 35, 84, 149, 134, 135, 35, 100, 101, 102, 35, 37, 57, 106, 149, 161, 37, 154, 37, 149, 116, 70, 37, 38, 117, 118, 161, 37, 69, 122, 38, 161, 89, 77, 127, 128, 129, 130, 131, 70, 136, 137, 85, 139, 140, 141, 142, 143, 144, 82, 80, 83, 94, 132, 82, 151, 152, 92, 82, 74, 134, 135, 85, 90, 100, 80, 159, 163, 161, 162, 166, 167, 87, 88, 89, 149, 91, 159, 93, 161, 95, 84, 96, 98, 97, 134, 135, 161, 103, 104, 105, 97, 116, 31, 109, 110, 97, 113, 100, 153, 115, 116, 114, 106, 128, 108, 128, 159, 128, 124, 113, -1, 161, 137, 117, 118, 133, -1, -1, 122, 138, 132, -1, -1, 127, 128, 129, 130, 131, -1, 137, 31, -1, -1, 158, -1, 74, 146, -1, 163, -1, 146, 80, 167, -1, 149, -1, 150, -1, 87, 88, 89, 149, 91, 149, 93, 159, 95, 161, 162, 98, 149, 149, 153, 155, 103, 104, 105, 154, 158, 162, 109, 110, 166, 74, 159, 159, 115, 116, 159, 80, 159, 1, 159, 159, 159, 124, 87, 88, 89, 159, 91, 159, 93, 159, 95, 159, 159, 98, 159, 159, 159, 159, 103, 104, 105, 74, 159, 161, 109, 110, 160, 80, 160, 160, 115, 116, 160, 160, 87, 88, 89, 161, 91, 124, 93, 160, 95, 161, 161, 98, 161, 161, 161, 102, 103, 104, 105, 74, 161, 161, 109, 110, 161, 80, 81, 161, 115, 116, 161, 163, 87, 88, 89, 162, 91, 124, 93, 162, 95, 162, 162, 98, 162, 162, 84, 162, 103, 104, 105, 162, 162, 162, 109, 110, 162, 162, 162, 162, 115, 116, 100, 101, 102, 162, 162, 162, 106, 124, 162, 162, 162, 162, 162, -1, 162, 162, 162, 117, 118, 163, 70, 163, 122, 163, 163, 163, 163, 127, 128, 129, 130, 131, 82, 163, 74, 163, 86, 163, 163, 163, 80, 163, 163, 163, 163, 163, -1, 87, 88, 89, 163, 91, 163, 93, 163, 95, 163, 163, 98, 159, 163, 161, 162, 103, 104, 105, 116, 163, 163, 109, 110, 163, 163, 163, 163, 115, 116, 163, 163, 163, 163, 163, 163, 163, 124, 164, 164, 137, 164, 139, 140, 141, 142, 143, 144, 164, 164, 164, 164, 164, 164, 151, 152, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 163, 165, 164, 166, 167, 164, 164, 164, 164, 164, 164, -1, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, -1, 165, -1, -1, 167); - protected $actionBase = array(0, -2, 154, 542, 785, 695, 969, 549, 53, 420, 831, 307, 307, 67, 307, 307, 307, 496, 538, 538, 565, 538, 204, 504, 706, 706, 706, 651, 651, 651, 651, 773, 773, 920, 920, 952, 888, 850, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 211, 344, 288, 691, 1038, 1044, 1040, 1045, 1036, 1035, 1039, 1041, 1046, 917, 918, 751, 919, 921, 922, 923, 1042, 854, 1037, 1043, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 641, 159, 473, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 54, 54, 54, 341, 692, 692, 190, 184, 658, 47, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 144, 144, 7, 7, 7, 7, 7, 371, -25, -25, -25, -25, 574, 347, 764, 474, 584, 266, 241, 338, 470, 470, 591, 591, 396, -116, 396, 348, 348, 396, 396, 396, 770, 770, 770, 770, 443, 559, 452, 86, 514, 479, 479, 479, 479, 514, 514, 514, 514, 783, 795, 514, 514, 514, 642, 653, 653, 714, 300, 300, 300, 653, 390, 765, 90, 390, 90, 37, 156, 781, -55, -40, 292, 768, 781, 320, 739, 314, 143, 797, 546, 797, 1034, 745, 733, 705, 836, 876, 1047, 752, 915, 786, 916, 62, 704, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1049, 469, 1034, 65, 1049, 1049, 1049, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 533, 65, 466, 552, 65, 763, 469, 211, 791, 211, 211, 211, 211, 973, 211, 211, 211, 211, 211, 211, 980, 737, 29, 211, 344, 52, 52, 428, 58, 52, 52, 52, 52, 211, 211, 211, 546, 743, 734, 555, 798, 195, 743, 743, 743, 345, 135, 192, 194, 710, 713, 280, 758, 758, 760, 931, 931, 758, 755, 758, 760, 944, 758, 931, 799, 433, 627, 571, 603, 631, 931, 494, 758, 758, 758, 758, 639, 758, 491, 445, 758, 758, 709, 741, 777, 46, 931, 931, 931, 777, 585, 771, 771, 771, 805, 808, 772, 740, 540, 507, 650, 138, 780, 740, 740, 758, 612, 772, 740, 772, 740, 802, 740, 740, 740, 772, 740, 755, 583, 740, 703, 646, 60, 740, 6, 945, 947, 636, 948, 941, 949, 989, 950, 951, 856, 963, 943, 956, 939, 932, 750, 690, 693, 793, 784, 930, 747, 747, 747, 927, 747, 747, 747, 747, 747, 747, 747, 747, 690, 839, 801, 766, 731, 974, 697, 698, 779, 880, 1018, 1048, 973, 1024, 958, 736, 699, 1004, 977, 796, 849, 978, 979, 1005, 1025, 1026, 884, 757, 886, 887, 841, 983, 858, 747, 945, 951, 943, 956, 939, 932, 732, 728, 726, 727, 722, 721, 712, 719, 738, 1027, 925, 875, 842, 980, 929, 690, 845, 1000, 835, 1008, 1009, 855, 782, 756, 846, 889, 984, 985, 986, 859, 1028, 804, 1001, 990, 1010, 787, 890, 1011, 1012, 1013, 1014, 892, 860, 866, 867, 810, 761, 991, 774, 896, 48, 754, 759, 778, 988, 654, 966, 870, 897, 898, 1015, 1016, 1017, 901, 960, 812, 1002, 746, 1003, 993, 813, 814, 677, 769, 1030, 735, 748, 767, 678, 681, 902, 903, 904, 962, 742, 744, 819, 821, 1031, 762, 1032, 910, 684, 823, 711, 911, 1023, 717, 718, 753, 873, 800, 776, 775, 987, 749, 825, 912, 826, 828, 829, 1020, 830, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 458, 458, 458, 458, 458, 458, 307, 307, 307, 307, 0, 0, 307, 0, 0, 0, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 415, 415, 291, 291, 0, 291, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 291, 291, 291, 291, 291, 291, 291, 799, 300, 300, 300, 300, 415, 415, 415, 415, 415, -88, -88, 415, 415, 415, 300, 300, 415, 244, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 0, 0, 65, 90, 415, 755, 755, 755, 755, 415, 415, 415, 415, 90, 90, 415, 415, 415, 0, 0, 0, 0, 0, 0, 0, 0, 65, 90, 0, 65, 0, 755, 755, 415, 799, 799, 232, 244, 415, 0, 0, 0, 0, 65, 755, 65, 469, 90, 469, 469, 52, 211, 232, 453, 453, 453, 453, 0, 546, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 755, 0, 799, 0, 755, 755, 755, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 755, 0, 0, 931, 0, 0, 0, 0, 758, 0, 0, 0, 0, 0, 0, 758, 944, 0, 0, 0, 0, 0, 0, 755, 0, 0, 0, 0, 0, 0, 0, 0, 747, 782, 0, 782, 0, 747, 747, 747, 0, 0, 0, 0, 769, 762); - protected $actionDefault = array(3, 32767, 103, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 101, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 588, 588, 588, 588, 32767, 32767, 250, 103, 32767, 32767, 464, 382, 382, 382, 32767, 32767, 532, 532, 532, 532, 532, 532, 32767, 32767, 32767, 32767, 32767, 32767, 464, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 101, 32767, 32767, 32767, 37, 7, 8, 10, 11, 50, 17, 320, 32767, 32767, 32767, 32767, 103, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 581, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 468, 447, 448, 450, 451, 381, 533, 587, 323, 584, 380, 146, 335, 325, 238, 326, 254, 469, 255, 470, 473, 474, 211, 283, 377, 150, 411, 465, 413, 463, 467, 412, 387, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 385, 386, 466, 444, 443, 442, 409, 32767, 32767, 410, 414, 384, 417, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 103, 32767, 415, 416, 433, 434, 431, 432, 435, 32767, 436, 437, 438, 439, 32767, 312, 32767, 32767, 32767, 361, 359, 312, 32767, 32767, 424, 425, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 526, 441, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 103, 32767, 101, 528, 406, 408, 496, 419, 420, 418, 388, 32767, 503, 32767, 103, 505, 32767, 32767, 32767, 112, 32767, 32767, 32767, 32767, 527, 32767, 534, 534, 32767, 489, 101, 194, 32767, 194, 194, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 595, 489, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 32767, 194, 111, 32767, 32767, 32767, 101, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 189, 32767, 264, 266, 103, 549, 194, 32767, 508, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 501, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 489, 429, 139, 32767, 139, 534, 421, 422, 423, 491, 534, 534, 534, 308, 285, 32767, 32767, 32767, 32767, 506, 506, 101, 101, 101, 101, 501, 32767, 32767, 112, 100, 100, 100, 100, 100, 104, 102, 32767, 32767, 32767, 32767, 100, 32767, 102, 102, 32767, 32767, 221, 208, 219, 102, 32767, 553, 554, 219, 102, 223, 223, 223, 243, 243, 480, 314, 102, 100, 102, 102, 196, 314, 314, 32767, 102, 480, 314, 480, 314, 198, 314, 314, 314, 480, 314, 32767, 102, 314, 210, 100, 100, 314, 32767, 32767, 32767, 491, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 521, 32767, 538, 551, 427, 428, 430, 536, 452, 453, 454, 455, 456, 457, 458, 460, 583, 32767, 495, 32767, 32767, 32767, 32767, 334, 593, 32767, 593, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 594, 32767, 534, 32767, 32767, 32767, 32767, 426, 9, 76, 43, 44, 52, 58, 512, 513, 514, 515, 509, 510, 516, 511, 32767, 32767, 517, 559, 32767, 32767, 535, 586, 32767, 32767, 32767, 32767, 32767, 32767, 139, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 521, 32767, 137, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 534, 32767, 32767, 32767, 32767, 310, 307, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 534, 32767, 32767, 32767, 32767, 32767, 287, 32767, 304, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 282, 32767, 32767, 376, 32767, 32767, 32767, 32767, 355, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 152, 152, 3, 3, 337, 152, 152, 152, 337, 152, 337, 337, 337, 152, 152, 152, 152, 152, 152, 276, 184, 258, 261, 243, 243, 152, 347, 152); - protected $goto = array(194, 194, 677, 466, 1281, 1282, 345, 428, 325, 325, 325, 325, 536, 536, 536, 536, 665, 591, 926, 1039, 685, 1003, 1019, 1020, 1080, 1081, 165, 165, 165, 165, 218, 195, 191, 191, 175, 177, 213, 191, 191, 191, 191, 191, 192, 192, 192, 192, 192, 192, 186, 187, 188, 189, 190, 215, 213, 216, 524, 525, 415, 526, 528, 529, 530, 531, 532, 533, 534, 535, 1108, 166, 167, 168, 193, 169, 170, 171, 164, 172, 173, 174, 176, 212, 214, 217, 235, 238, 241, 242, 244, 255, 256, 257, 258, 259, 260, 261, 263, 264, 265, 266, 277, 278, 313, 314, 315, 420, 421, 422, 569, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 178, 234, 179, 196, 197, 198, 236, 186, 187, 188, 189, 190, 215, 1108, 199, 180, 181, 182, 200, 196, 183, 237, 201, 199, 163, 202, 203, 184, 204, 205, 206, 185, 207, 208, 209, 210, 211, 834, 587, 425, 645, 548, 541, 830, 831, 419, 310, 311, 332, 564, 316, 424, 333, 426, 623, 832, 973, 947, 947, 945, 947, 710, 808, 540, 982, 977, 827, 827, 607, 642, 391, 541, 548, 557, 558, 398, 567, 589, 603, 604, 839, 865, 887, 882, 883, 896, 15, 840, 884, 837, 885, 886, 838, 457, 457, 639, 890, 656, 657, 658, 987, 987, 457, 609, 609, 806, 1060, 1056, 1057, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1256, 1256, 346, 347, 812, 949, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1014, 1013, 1207, 1008, 1207, 1008, 1207, 561, 442, 1008, 1008, 1008, 343, 442, 1008, 442, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 251, 251, 1296, 812, 1207, 812, 1307, 1307, 970, 1207, 1207, 1207, 1207, 1017, 1018, 1207, 1207, 1207, 1288, 1288, 1288, 1288, 827, 1307, 321, 305, 248, 248, 248, 248, 250, 252, 387, 903, 1254, 1254, 619, 620, 904, 1203, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 527, 527, 280, 280, 280, 280, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 941, 405, 684, 560, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 348, 644, 442, 389, 393, 549, 588, 592, 847, 1157, 348, 348, 538, 1204, 538, 891, 538, 892, 432, 418, 822, 598, 666, 859, 348, 348, 846, 348, 5, 1323, 6, 824, 554, 1283, 1284, 650, 1205, 1264, 1265, 602, 448, 543, 565, 601, 348, 943, 943, 943, 943, 334, 932, 448, 937, 944, 403, 404, 1278, 852, 1278, 654, 1278, 655, 397, 407, 408, 409, 1200, 668, 849, 1045, 410, 542, 552, 992, 341, 490, 542, 491, 552, 714, 467, 390, 861, 497, 1049, 1290, 1290, 1290, 1290, 1267, 954, 568, 460, 461, 462, 1091, 857, 471, 0, 1314, 1315, 555, 0, 0, 0, 711, 622, 624, 0, 643, 0, 1274, 670, 667, 671, 984, 675, 683, 980, 0, 0, 0, 0, 0, 855, 596, 610, 613, 614, 615, 616, 636, 637, 638, 687, 860, 848, 1044, 1048, 908, 1096, 0, 543, 0, 0, 952, 606, 1306, 1306, 0, 1047, 989, 0, 0, 1276, 1276, 1047, 254, 254, 851, 0, 648, 968, 427, 1306, 0, 0, 845, 942, 427, 0, 0, 0, 0, 0, 0, 0, 1015, 1015, 1199, 0, 1309, 649, 1026, 1022, 1023, 0, 0, 0, 0, 1089, 864, 0, 0, 0, 586, 1073, 0, 688, 674, 674, 1202, 498, 680, 1071, 1188, 919, 0, 0, 1189, 1192, 920, 1193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 272, 0, 0, 0, 0, 539, 0, 539); - protected $gotoCheck = array(42, 42, 72, 172, 172, 172, 95, 87, 23, 23, 23, 23, 105, 105, 105, 105, 87, 105, 87, 125, 9, 87, 87, 87, 142, 142, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 15, 128, 65, 65, 75, 75, 25, 26, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 27, 25, 25, 25, 25, 25, 25, 7, 25, 25, 25, 22, 22, 55, 55, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 15, 45, 15, 15, 15, 15, 75, 15, 15, 15, 15, 15, 15, 147, 147, 84, 15, 84, 84, 84, 105, 105, 147, 106, 106, 6, 15, 15, 15, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 166, 166, 95, 95, 12, 49, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 116, 116, 72, 72, 72, 72, 72, 168, 23, 72, 72, 72, 175, 23, 72, 23, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 5, 5, 177, 12, 72, 12, 179, 179, 101, 72, 72, 72, 72, 117, 117, 72, 72, 72, 9, 9, 9, 9, 22, 179, 165, 165, 5, 5, 5, 5, 5, 5, 61, 72, 167, 167, 83, 83, 72, 20, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 169, 169, 24, 24, 24, 24, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 91, 91, 91, 102, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 14, 63, 23, 58, 58, 58, 58, 58, 35, 149, 14, 14, 19, 20, 19, 64, 19, 64, 111, 13, 20, 13, 114, 35, 14, 14, 35, 14, 46, 14, 46, 18, 9, 174, 174, 118, 20, 20, 20, 9, 19, 14, 2, 2, 14, 19, 19, 19, 19, 29, 90, 19, 19, 19, 80, 80, 128, 39, 128, 80, 128, 80, 28, 80, 80, 80, 158, 80, 37, 127, 80, 9, 9, 108, 80, 153, 9, 153, 9, 97, 155, 9, 41, 153, 130, 128, 128, 128, 128, 14, 94, 9, 9, 9, 9, 145, 9, 82, -1, 9, 9, 48, -1, -1, -1, 48, 48, 48, -1, 48, -1, 128, 14, 48, 48, 48, 48, 48, 48, -1, -1, -1, -1, -1, 9, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 16, 16, 16, 16, 17, 17, -1, 14, -1, -1, 16, 17, 178, 178, -1, 128, 17, -1, -1, 128, 128, 128, 5, 5, 17, -1, 17, 17, 115, 178, -1, -1, 17, 16, 115, -1, -1, -1, -1, -1, -1, -1, 115, 115, 17, -1, 178, 115, 115, 115, 115, -1, -1, -1, -1, 16, 16, -1, -1, -1, 8, 8, -1, 8, 8, 8, 14, 8, 8, 8, 78, 78, -1, -1, 78, 78, 78, 78, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 24, -1, -1, -1, -1, 24, -1, 24); - protected $gotoBase = array(0, 0, -283, 0, 0, 284, 216, 177, 554, 7, 0, 0, -46, 51, 72, -181, 57, 49, 91, 111, -62, 0, -135, 5, 334, 163, 164, 175, 94, 122, 0, 0, 0, 0, 0, 10, 0, 98, 0, 103, 0, 13, -1, 0, 0, 193, -320, 0, -223, 225, 0, 0, 0, 0, 0, 153, 0, 0, 325, 0, 0, 276, 0, 127, 362, -76, 0, 0, 0, 0, 0, 0, -6, 0, 0, -174, 0, 0, 168, 140, -61, 0, -4, -149, -478, 0, 0, -263, 0, 0, 88, 50, 0, 0, 19, -467, 0, 43, 0, 0, 0, 259, 312, 0, 0, -15, -12, 0, 76, 0, 0, 110, 0, 0, 109, 261, -16, 16, 114, 0, 0, 0, 0, 0, 0, 17, 0, 68, 155, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -248, 0, 0, 23, 0, 184, 0, 104, 0, 0, 0, -44, 0, 12, 0, 0, 70, 0, 0, 0, 0, 0, 0, -9, 4, 80, 238, 96, 0, 0, -294, 0, 34, 242, 0, 257, 209, -13, 0, 0); - protected $gotoDefault = array(-32768, 502, 718, 4, 719, 912, 795, 804, 584, 518, 686, 342, 611, 416, 1272, 889, 1095, 566, 823, 1216, 1224, 449, 826, 326, 708, 871, 872, 873, 394, 379, 385, 392, 634, 612, 484, 858, 445, 850, 476, 853, 444, 862, 162, 413, 500, 866, 3, 868, 545, 899, 380, 876, 381, 661, 878, 551, 880, 881, 388, 395, 396, 1100, 559, 608, 893, 243, 553, 894, 378, 895, 902, 383, 386, 672, 456, 495, 489, 406, 1075, 595, 631, 453, 470, 618, 617, 605, 469, 1011, 411, 328, 931, 939, 477, 454, 953, 344, 961, 716, 1107, 625, 479, 969, 626, 976, 979, 519, 520, 468, 991, 268, 994, 480, 1032, 651, 1005, 1006, 652, 627, 1028, 628, 653, 629, 1030, 463, 585, 1038, 446, 1046, 1260, 447, 1050, 262, 1053, 274, 412, 429, 1058, 1059, 8, 1065, 678, 679, 10, 273, 499, 1090, 673, 443, 1106, 433, 1176, 1178, 547, 481, 1196, 1195, 664, 496, 1201, 1263, 441, 521, 464, 312, 522, 304, 330, 309, 537, 291, 331, 523, 465, 1269, 1277, 327, 30, 1297, 1308, 338, 563, 600); - protected $ruleToNonTerminal = array(0, 1, 3, 3, 2, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 9, 10, 11, 11, 11, 12, 12, 13, 13, 14, 15, 15, 16, 16, 17, 17, 18, 18, 21, 21, 22, 23, 23, 24, 24, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 29, 29, 30, 30, 32, 34, 34, 28, 36, 36, 33, 38, 38, 35, 35, 37, 37, 39, 39, 31, 40, 40, 41, 43, 44, 44, 45, 46, 46, 48, 47, 47, 47, 47, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 25, 25, 68, 68, 71, 71, 70, 69, 69, 62, 74, 74, 75, 75, 76, 76, 77, 77, 78, 78, 26, 26, 27, 27, 27, 27, 86, 86, 88, 88, 81, 81, 89, 89, 90, 90, 90, 82, 82, 85, 85, 83, 83, 91, 92, 92, 56, 56, 64, 64, 67, 67, 67, 66, 93, 93, 94, 57, 57, 57, 57, 95, 95, 96, 96, 97, 97, 98, 99, 99, 100, 100, 101, 101, 54, 54, 50, 50, 103, 52, 52, 104, 51, 51, 53, 53, 63, 63, 63, 63, 79, 79, 107, 107, 109, 109, 110, 110, 110, 110, 108, 108, 108, 112, 112, 112, 112, 87, 87, 115, 115, 115, 116, 116, 113, 113, 117, 117, 119, 119, 120, 120, 114, 121, 121, 118, 122, 122, 122, 122, 111, 111, 80, 80, 80, 20, 20, 20, 124, 123, 123, 125, 125, 125, 125, 59, 126, 126, 127, 60, 129, 129, 130, 130, 131, 131, 84, 132, 132, 132, 132, 132, 132, 137, 137, 138, 138, 139, 139, 139, 139, 139, 140, 141, 141, 136, 136, 133, 133, 135, 135, 143, 143, 142, 142, 142, 142, 142, 142, 142, 134, 144, 144, 146, 145, 145, 61, 102, 147, 147, 55, 55, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 154, 148, 148, 153, 153, 156, 157, 157, 158, 159, 159, 159, 19, 19, 72, 72, 72, 72, 149, 149, 149, 149, 161, 161, 150, 150, 152, 152, 152, 155, 155, 166, 166, 166, 166, 166, 166, 166, 166, 166, 167, 167, 106, 169, 169, 169, 169, 151, 151, 151, 151, 151, 151, 151, 151, 58, 58, 164, 164, 164, 164, 170, 170, 160, 160, 160, 171, 171, 171, 171, 171, 171, 73, 73, 65, 65, 65, 65, 128, 128, 128, 128, 174, 173, 163, 163, 163, 163, 163, 163, 163, 162, 162, 162, 172, 172, 172, 172, 105, 168, 176, 176, 175, 175, 177, 177, 177, 177, 177, 177, 177, 177, 165, 165, 165, 165, 179, 180, 178, 178, 178, 178, 178, 178, 178, 178, 181, 181, 181, 181); - protected $ruleToLength = array(1, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 2, 1, 3, 4, 1, 2, 0, 1, 1, 1, 1, 1, 3, 5, 4, 3, 4, 2, 3, 1, 1, 7, 6, 2, 3, 1, 2, 3, 1, 2, 3, 1, 1, 3, 1, 3, 1, 2, 2, 3, 1, 3, 2, 3, 1, 3, 2, 0, 1, 1, 1, 1, 1, 3, 7, 10, 5, 7, 9, 5, 3, 3, 3, 3, 3, 3, 1, 2, 5, 7, 9, 6, 5, 6, 3, 2, 1, 1, 1, 0, 2, 1, 3, 8, 0, 4, 2, 1, 3, 0, 1, 0, 1, 0, 1, 3, 1, 8, 9, 8, 7, 6, 8, 0, 2, 0, 2, 1, 2, 1, 2, 1, 1, 1, 0, 2, 0, 2, 0, 2, 2, 1, 3, 1, 4, 1, 4, 1, 1, 4, 2, 1, 3, 3, 3, 4, 4, 5, 0, 2, 4, 3, 1, 1, 7, 0, 2, 1, 3, 3, 4, 1, 4, 0, 2, 5, 0, 2, 6, 0, 2, 0, 3, 1, 2, 1, 1, 2, 0, 1, 3, 0, 2, 1, 1, 1, 1, 6, 8, 6, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 1, 3, 3, 3, 3, 3, 1, 3, 3, 1, 1, 2, 1, 1, 0, 1, 0, 2, 2, 2, 4, 3, 1, 1, 3, 1, 2, 2, 3, 2, 3, 1, 1, 2, 3, 1, 1, 3, 2, 0, 1, 5, 5, 10, 3, 5, 1, 1, 3, 0, 2, 4, 5, 4, 4, 4, 3, 1, 1, 1, 1, 1, 1, 0, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 3, 1, 1, 3, 2, 2, 3, 1, 0, 1, 1, 3, 3, 3, 4, 1, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 4, 3, 4, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 3, 2, 1, 2, 4, 2, 2, 8, 9, 8, 9, 9, 10, 9, 10, 8, 3, 2, 0, 4, 2, 1, 3, 2, 2, 2, 4, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 0, 3, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 4, 1, 1, 3, 1, 1, 1, 1, 1, 3, 2, 3, 0, 1, 1, 3, 1, 1, 1, 1, 1, 3, 1, 1, 4, 4, 1, 4, 4, 0, 1, 1, 1, 3, 3, 1, 4, 2, 2, 1, 3, 1, 4, 4, 3, 3, 3, 3, 1, 3, 1, 1, 3, 1, 1, 4, 1, 1, 1, 3, 1, 1, 2, 1, 3, 4, 3, 2, 0, 2, 2, 1, 2, 1, 1, 1, 4, 3, 3, 3, 3, 6, 3, 1, 1, 2, 1); + protected $action = array(133, 134, 135, 579, 136, 137, 0, 748, 749, 750, 138, 38, 327, -32766, -32766, -32766, -32766, -32766, -32766, -32767, -32767, -32767, -32767, 102, 103, 104, 105, 106, 1109, 1110, 1111, 1108, 1107, 1106, 1112, 742, 741, -32766, 1232, -32766, -32766, -32766, -32766, -32766, -32766, -32766, -32767, -32767, -32767, -32767, -32767, 2, 107, 108, 109, 751, 274, 381, 380, -32766, -32766, -32766, -32766, 104, 105, 106, 1024, 422, 110, 265, 139, 403, 755, 756, 757, 758, 466, 467, 428, 938, 291, -32766, 287, -32766, -32766, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 789, 580, 790, 791, 792, 793, 781, 782, 344, 345, 784, 785, 770, 771, 772, 774, 775, 776, 355, 816, 817, 818, 819, 820, 581, 777, 778, 582, 583, 810, 801, 799, 800, 813, 796, 797, 687, -545, 584, 585, 795, 586, 587, 588, 589, 590, 591, -328, -593, -367, 1234, -367, 798, 592, 593, -593, 140, -32766, -32766, -32766, 133, 134, 135, 579, 136, 137, 1057, 748, 749, 750, 138, 38, 688, 1020, 1019, 1018, 1021, 390, -32766, 7, -32766, -32766, -32766, -32766, -32766, -32766, -32766, -32766, -32766, -32766, 379, 380, 1033, 689, 690, 742, 741, -32766, -32766, -32766, 422, -545, -545, -590, -32766, -32766, -32766, 1032, -32766, 127, -590, 1236, 1235, 1237, 1318, 751, -545, 290, -32766, 283, -32766, -32766, -32766, -32766, -32766, 1236, 1235, 1237, -545, 265, 139, 403, 755, 756, 757, 758, 16, 481, 428, 458, 459, 460, 298, 722, 35, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 789, 580, 790, 791, 792, 793, 781, 782, 344, 345, 784, 785, 770, 771, 772, 774, 775, 776, 355, 816, 817, 818, 819, 820, 581, 777, 778, 582, 583, 810, 801, 799, 800, 813, 796, 797, 129, 824, 584, 585, 795, 586, 587, 588, 589, 590, 591, -328, 83, 84, 85, -593, 798, 592, 593, -593, 149, 773, 743, 744, 745, 746, 747, 824, 748, 749, 750, 786, 787, 37, 145, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 291, 274, 835, 254, 1109, 1110, 1111, 1108, 1107, 1106, 1112, -590, 860, 110, 861, -590, 482, 751, -32766, -32766, -32766, -32766, -32766, 142, 603, 1085, 742, 741, 1262, 326, 987, 752, 753, 754, 755, 756, 757, 758, 309, -32766, 822, -32766, -32766, -32766, -32766, 242, 553, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 789, 812, 790, 791, 792, 793, 781, 782, 783, 811, 784, 785, 770, 771, 772, 774, 775, 776, 815, 816, 817, 818, 819, 820, 821, 777, 778, 779, 780, 810, 801, 799, 800, 813, 796, 797, 311, 940, 788, 794, 795, 802, 803, 805, 804, 806, 807, 323, 609, 1274, 1033, 833, 798, 809, 808, 50, 51, 52, 512, 53, 54, 860, 241, 861, 918, 55, 56, -111, 57, -32766, -32766, -32766, -111, 826, -111, 290, 1302, 1347, 356, 305, 1348, 339, -111, -111, -111, -111, -111, -111, -111, -111, -32766, -194, -32766, -32766, -32766, -193, 956, 957, 829, -86, 988, 958, 834, 58, 59, 340, 428, 952, -544, 60, 832, 61, 247, 248, 62, 63, 64, 65, 66, 67, 68, 69, 1241, 28, 267, 70, 444, 513, -342, -32766, 141, 1268, 1269, 514, 918, 833, 326, -272, 918, 1266, 42, 25, 515, 940, 516, 14, 517, 908, 518, 828, 369, 519, 520, 373, 709, 1033, 44, 45, 445, 376, 375, 388, 46, 521, 712, -86, 440, 1101, 367, 338, -543, 441, -544, -544, 830, 1227, 442, 523, 524, 525, 290, 1236, 1235, 1237, 361, 1030, 443, -544, 1087, 526, 527, 839, 1255, 1256, 1257, 1258, 1252, 1253, 297, -544, 151, -550, -584, 833, 1259, 1254, -584, 1033, 1236, 1235, 1237, 298, -154, -154, -154, 152, 71, 908, 321, 322, 326, 908, 920, 1030, 707, 833, 154, -154, 1337, -154, 155, -154, 283, -154, -543, -543, 82, 1232, 1086, 1322, 734, 156, 326, 374, 158, 1033, 1321, -194, -79, -543, -88, -193, 742, 741, 956, 957, 653, 26, -32766, 522, -51, -543, 33, -549, 894, 952, -111, -111, -111, 32, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, -59, 75, 28, 672, 673, 326, -58, 36, 250, 920, 124, 707, 125, 920, 833, 707, -154, 130, 1266, 131, -32766, -547, 144, -542, 150, 406, 1234, 377, 378, 1146, 1148, 382, 383, -32766, -32766, -32766, -85, -32766, 1056, -32766, -542, -32766, 644, 645, -32766, 159, 160, 161, 1232, -32766, -32766, -32766, 162, -79, 1227, -32766, -32766, 742, 741, 163, -302, -32766, 419, -75, -4, 918, -73, 287, 526, 527, -32766, 1255, 1256, 1257, 1258, 1252, 1253, -72, -71, -70, -69, -68, -67, 1259, 1254, -547, -547, -542, -542, 742, 741, -66, -47, -18, -32766, 73, 148, 918, 322, 326, 1234, 273, -542, 284, -542, -542, 723, -32766, -32766, -32766, 726, -32766, -547, -32766, -542, -32766, 917, 147, -32766, -542, 288, 289, -298, -32766, -32766, -32766, -32766, 713, 279, -32766, -32766, -542, 1234, 280, 285, -32766, 419, 48, 286, -32766, -32766, -32766, 332, -32766, -32766, -32766, 292, -32766, 908, 293, -32766, 934, 274, 1030, 918, -32766, -32766, -32766, 110, 682, 132, -32766, -32766, 833, 146, -32766, 559, -32766, 419, 659, 374, 824, 435, 1349, 74, 1033, -32766, 296, 654, 1116, 908, 956, 957, 306, 714, 698, 522, 555, 303, 13, 310, 852, 952, -111, -111, -111, 700, 463, 492, 953, 283, 299, 300, -32766, 49, 675, 918, 304, 660, 1234, 676, 936, 1273, -32766, 10, 1263, -32766, -32766, -32766, 642, -32766, 918, -32766, 920, -32766, 707, -4, -32766, 126, 34, 918, 565, -32766, -32766, -32766, -32766, 0, 908, -32766, -32766, 0, 1234, 918, 0, -32766, 419, 0, 0, -32766, -32766, -32766, 717, -32766, -32766, -32766, 920, -32766, 707, 1033, -32766, 724, 1275, 0, 487, -32766, -32766, -32766, -32766, 301, 302, -32766, -32766, -507, 1234, 571, -497, -32766, 419, 607, 8, -32766, -32766, -32766, 372, -32766, -32766, -32766, 17, -32766, 908, 371, -32766, 832, 298, 320, 128, -32766, -32766, -32766, 40, 370, 41, -32766, -32766, 908, -250, -250, -250, -32766, 419, 731, 374, 973, 908, 707, 732, 899, -32766, 997, 974, 728, 981, 956, 957, 971, 908, 982, 522, 897, 969, 1090, 1093, 894, 952, -111, -111, -111, 28, 1094, 1091, 1092, -249, -249, -249, 1241, 1098, 708, 374, 844, 833, 1288, 1306, 1340, 1266, 647, 1267, 711, 715, 956, 957, 716, 1241, 718, 522, 920, 719, 707, -250, 894, 952, -111, -111, -111, 720, -16, 721, 725, 710, -511, 920, 895, 707, -578, 1232, 1344, 1346, 855, 854, 920, 1227, 707, -577, 863, 946, 989, 862, 1345, 945, 943, 944, 920, 947, 707, -249, 527, 1218, 1255, 1256, 1257, 1258, 1252, 1253, 927, 937, 925, 979, 980, 631, 1259, 1254, 1343, 1300, -32766, 1289, 1307, 833, 1316, -275, 1234, -576, 73, -550, -549, 322, 326, -32766, -32766, -32766, -548, -32766, -491, -32766, 833, -32766, 1, 29, -32766, 30, 39, 43, 47, -32766, -32766, -32766, 72, 76, 77, -32766, -32766, 1232, -111, -111, 78, -32766, 419, -111, 79, 80, 81, 143, 153, -111, -32766, 157, 246, 328, 1232, -111, -111, 356, -32766, 357, -111, 358, 359, 360, 361, 362, -111, 363, 364, 365, 366, 368, 436, 0, -273, -32766, -272, 19, 20, 298, 21, 22, 24, 405, 75, 1203, 483, 484, 326, 491, 0, 494, 495, 496, 497, 501, 298, 502, 503, 510, 693, 75, 0, 1245, 1186, 326, 1264, 1059, 1058, 1039, 1222, 1035, -277, -103, 18, 23, 27, 295, 404, 600, 604, 633, 699, 1190, 1240, 1187, 1319, 0, 0, 0, 326); + protected $actionCheck = array(2, 3, 4, 5, 6, 7, 0, 9, 10, 11, 12, 13, 70, 9, 10, 11, 9, 10, 11, 44, 45, 46, 47, 48, 49, 50, 51, 52, 116, 117, 118, 119, 120, 121, 122, 37, 38, 30, 116, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 8, 53, 54, 55, 57, 57, 106, 107, 137, 9, 10, 11, 50, 51, 52, 1, 116, 69, 71, 72, 73, 74, 75, 76, 77, 134, 135, 80, 1, 30, 30, 30, 32, 33, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 80, 70, 136, 137, 138, 139, 140, 141, 142, 143, 144, 8, 1, 106, 80, 108, 150, 151, 152, 8, 154, 9, 10, 11, 2, 3, 4, 5, 6, 7, 164, 9, 10, 11, 12, 13, 116, 119, 120, 121, 122, 106, 30, 108, 32, 33, 34, 35, 36, 37, 38, 9, 10, 11, 106, 107, 138, 137, 138, 37, 38, 9, 10, 11, 116, 134, 135, 1, 9, 10, 11, 137, 30, 14, 8, 155, 156, 157, 1, 57, 149, 163, 30, 163, 32, 33, 34, 35, 36, 155, 156, 157, 161, 71, 72, 73, 74, 75, 76, 77, 8, 31, 80, 129, 130, 131, 158, 161, 8, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 8, 80, 136, 137, 138, 139, 140, 141, 142, 143, 144, 164, 9, 10, 11, 160, 150, 151, 152, 164, 154, 2, 3, 4, 5, 6, 7, 80, 9, 10, 11, 12, 13, 30, 8, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 30, 57, 1, 8, 116, 117, 118, 119, 120, 121, 122, 160, 106, 69, 108, 164, 161, 57, 9, 10, 11, 9, 10, 161, 1, 1, 37, 38, 1, 167, 31, 71, 72, 73, 74, 75, 76, 77, 8, 30, 80, 32, 33, 34, 35, 14, 85, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 8, 122, 136, 137, 138, 139, 140, 141, 142, 143, 144, 8, 51, 146, 138, 82, 150, 151, 152, 2, 3, 4, 5, 6, 7, 106, 97, 108, 1, 12, 13, 101, 15, 9, 10, 11, 106, 80, 108, 163, 1, 80, 163, 113, 83, 8, 116, 117, 118, 119, 120, 121, 122, 123, 30, 8, 32, 33, 34, 8, 117, 118, 80, 31, 159, 122, 159, 50, 51, 8, 80, 128, 70, 56, 155, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 1, 70, 71, 72, 73, 74, 162, 9, 161, 78, 79, 80, 1, 82, 167, 164, 1, 86, 87, 88, 89, 122, 91, 101, 93, 84, 95, 156, 8, 98, 99, 8, 161, 138, 103, 104, 105, 106, 107, 8, 109, 110, 31, 97, 8, 123, 115, 116, 70, 8, 134, 135, 156, 122, 8, 124, 125, 126, 163, 155, 156, 157, 163, 116, 8, 149, 162, 136, 137, 8, 139, 140, 141, 142, 143, 144, 145, 161, 14, 163, 160, 82, 151, 152, 164, 138, 155, 156, 157, 158, 75, 76, 77, 14, 163, 84, 165, 166, 167, 84, 159, 116, 161, 82, 14, 90, 85, 92, 14, 94, 163, 96, 134, 135, 161, 116, 159, 1, 161, 14, 167, 106, 14, 138, 8, 164, 16, 149, 31, 164, 37, 38, 117, 118, 75, 76, 137, 122, 31, 161, 14, 163, 127, 128, 129, 130, 131, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 16, 163, 70, 75, 76, 167, 16, 147, 148, 159, 16, 161, 16, 159, 82, 161, 162, 16, 86, 16, 74, 70, 16, 70, 101, 102, 80, 106, 107, 59, 60, 106, 107, 87, 88, 89, 31, 91, 1, 93, 70, 95, 111, 112, 98, 16, 16, 16, 116, 103, 104, 105, 16, 31, 122, 109, 110, 37, 38, 16, 35, 115, 116, 31, 0, 1, 31, 30, 136, 137, 124, 139, 140, 141, 142, 143, 144, 31, 31, 31, 31, 31, 31, 151, 152, 134, 135, 134, 135, 37, 38, 31, 31, 31, 74, 163, 31, 1, 166, 167, 80, 31, 149, 31, 134, 135, 31, 87, 88, 89, 31, 91, 161, 93, 161, 95, 31, 31, 98, 149, 37, 37, 35, 103, 104, 105, 74, 31, 35, 109, 110, 161, 80, 35, 35, 115, 116, 70, 35, 87, 88, 89, 35, 91, 124, 93, 37, 95, 84, 37, 98, 38, 57, 116, 1, 103, 104, 105, 69, 77, 31, 109, 110, 82, 70, 85, 89, 115, 116, 96, 106, 80, 108, 83, 154, 138, 124, 113, 90, 82, 84, 117, 118, 114, 31, 80, 122, 85, 132, 97, 132, 127, 128, 129, 130, 131, 92, 97, 97, 128, 163, 134, 135, 74, 70, 94, 1, 133, 100, 80, 100, 154, 146, 137, 150, 160, 87, 88, 89, 113, 91, 1, 93, 159, 95, 161, 162, 98, 161, 161, 1, 153, 103, 104, 105, 74, -1, 84, 109, 110, -1, 80, 1, -1, 115, 116, -1, -1, 87, 88, 89, 31, 91, 124, 93, 159, 95, 161, 138, 98, 31, 146, -1, 102, 103, 104, 105, 74, 134, 135, 109, 110, 149, 80, 81, 149, 115, 116, 153, 149, 87, 88, 89, 149, 91, 124, 93, 149, 95, 84, 149, 98, 155, 158, 161, 161, 103, 104, 105, 159, 161, 159, 109, 110, 84, 100, 101, 102, 115, 116, 159, 106, 159, 84, 161, 159, 159, 124, 159, 159, 162, 159, 117, 118, 159, 84, 159, 122, 159, 159, 159, 159, 127, 128, 129, 130, 131, 70, 159, 159, 159, 100, 101, 102, 1, 159, 161, 106, 160, 82, 160, 160, 160, 86, 160, 166, 161, 161, 117, 118, 161, 1, 161, 122, 159, 161, 161, 162, 127, 128, 129, 130, 131, 161, 31, 161, 161, 161, 165, 159, 162, 161, 163, 116, 162, 162, 162, 162, 159, 122, 161, 163, 162, 162, 162, 162, 162, 162, 162, 162, 159, 162, 161, 162, 137, 162, 139, 140, 141, 142, 143, 144, 162, 162, 162, 162, 162, 162, 151, 152, 162, 162, 74, 162, 162, 82, 162, 164, 80, 163, 163, 163, 163, 166, 167, 87, 88, 89, 163, 91, 163, 93, 82, 95, 163, 163, 98, 163, 163, 163, 163, 103, 104, 105, 163, 163, 163, 109, 110, 116, 117, 118, 163, 115, 116, 122, 163, 163, 163, 163, 163, 128, 124, 163, 163, 163, 116, 117, 118, 163, 137, 163, 122, 163, 163, 163, 163, 163, 128, 163, 163, 163, 163, 163, 163, -1, 164, 137, 164, 164, 164, 158, 164, 164, 164, 164, 163, 165, 164, 164, 167, 164, -1, 164, 164, 164, 164, 164, 158, 164, 164, 164, 164, 163, -1, 164, 164, 167, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, -1, -1, -1, 167); + protected $actionBase = array(0, -2, 154, 542, 752, 893, 929, 52, 374, 431, 398, 869, 793, 235, 307, 307, 793, 307, 784, 908, 908, 917, 908, 538, 841, 468, 468, 468, 708, 708, 708, 708, 740, 740, 849, 849, 881, 817, 634, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 348, 346, 370, 653, 1063, 1069, 1065, 1070, 1061, 1060, 1064, 1066, 1071, 946, 947, 774, 949, 950, 943, 952, 1067, 882, 1062, 1068, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 525, 191, 359, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 174, 174, 174, 620, 620, 51, 465, 356, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 658, 184, 144, 144, 7, 7, 7, 7, 7, 1031, 371, 1048, -25, -25, -25, -25, 50, 725, 526, 449, 39, 317, 80, 474, 474, 13, 13, 512, 512, 422, 422, 512, 512, 512, 808, 808, 808, 808, 443, 505, 360, 308, -78, 209, 209, 209, 209, -78, -78, -78, -78, 803, 877, -78, -78, -78, 63, 641, 641, 822, -1, -1, -1, 641, 253, 790, 548, 253, 384, 548, 480, 402, 764, 759, -49, 447, 764, 639, 755, 198, 143, 825, 609, 825, 1059, 320, 768, 426, 749, 720, 874, 904, 1072, 796, 941, 798, 942, 106, -58, 710, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1073, 336, 1059, 423, 1073, 1073, 1073, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 619, 423, 586, 616, 423, 795, 336, 348, 814, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 750, 202, 348, 346, 78, 78, 484, 65, 78, 78, 78, 78, 348, 348, 348, 348, 609, 783, 766, 613, 813, 492, 783, 783, 783, 473, 135, 378, 488, 713, 775, 67, 779, 779, 785, 969, 969, 779, 769, 779, 785, 975, 779, 779, 969, 969, 823, 280, 563, 478, 550, 568, 969, 377, 779, 779, 779, 779, 746, 573, 779, 342, 314, 779, 779, 746, 744, 760, 43, 762, 969, 969, 969, 746, 547, 762, 762, 762, 839, 844, 794, 758, 444, 433, 588, 232, 801, 758, 758, 779, 558, 794, 758, 794, 758, 745, 758, 758, 758, 794, 758, 769, 502, 758, 717, 583, 224, 758, 6, 979, 980, 624, 981, 973, 987, 1019, 991, 992, 873, 965, 999, 974, 993, 972, 970, 773, 682, 684, 818, 811, 963, 777, 777, 777, 956, 777, 777, 777, 777, 777, 777, 777, 777, 682, 743, 829, 765, 1006, 689, 691, 754, 906, 901, 1030, 1004, 1049, 994, 828, 694, 1028, 1008, 846, 821, 1009, 1010, 1029, 1050, 1052, 910, 782, 911, 912, 876, 1012, 883, 777, 979, 992, 693, 974, 993, 972, 970, 748, 739, 737, 738, 736, 735, 723, 734, 753, 1053, 954, 907, 878, 1011, 957, 682, 879, 1023, 756, 1032, 1033, 827, 788, 778, 880, 913, 1014, 1015, 1016, 884, 1054, 887, 830, 1024, 951, 1035, 789, 918, 1037, 1038, 1039, 1040, 889, 919, 892, 916, 900, 845, 776, 1020, 761, 920, 591, 787, 791, 800, 1018, 606, 1000, 902, 921, 922, 1041, 1043, 1044, 923, 924, 995, 847, 1026, 799, 1027, 1022, 848, 850, 617, 797, 1055, 781, 786, 772, 621, 632, 925, 927, 931, 998, 763, 770, 853, 855, 1056, 771, 1057, 938, 635, 857, 718, 939, 1046, 719, 724, 637, 678, 672, 731, 792, 903, 826, 757, 780, 1017, 724, 767, 858, 940, 859, 860, 867, 1045, 868, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 458, 458, 458, 458, 458, 458, 307, 307, 307, 307, 307, 307, 307, 0, 0, 307, 0, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 66, 66, 291, 291, 291, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 0, 291, 291, 291, 291, 291, 291, 291, 291, 66, 823, 66, -1, -1, -1, -1, 66, 66, 66, -88, -88, 66, 384, 66, 66, -1, -1, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 0, 0, 423, 548, 66, 769, 769, 769, 769, 66, 66, 66, 66, 548, 548, 66, 66, 66, 0, 0, 0, 0, 0, 0, 0, 0, 423, 548, 0, 423, 0, 0, 769, 769, 66, 384, 823, 643, 66, 0, 0, 0, 0, 423, 769, 423, 336, 779, 548, 779, 336, 336, 78, 348, 643, 611, 611, 611, 611, 0, 0, 609, 823, 823, 823, 823, 823, 823, 823, 823, 823, 823, 823, 769, 0, 823, 0, 769, 769, 769, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 769, 0, 0, 969, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 975, 0, 0, 0, 0, 0, 0, 769, 0, 0, 0, 0, 0, 0, 0, 0, 0, 777, 788, 0, 788, 0, 777, 777, 777, 0, 0, 0, 0, 797, 771); + protected $actionDefault = array(3, 32767, 103, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 101, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 596, 596, 596, 596, 32767, 32767, 254, 103, 32767, 32767, 469, 387, 387, 387, 32767, 32767, 540, 540, 540, 540, 540, 540, 32767, 32767, 32767, 32767, 32767, 32767, 469, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 101, 32767, 32767, 32767, 37, 7, 8, 10, 11, 50, 17, 324, 32767, 32767, 32767, 32767, 103, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 589, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 473, 452, 453, 455, 456, 386, 541, 595, 327, 592, 385, 146, 339, 329, 242, 330, 258, 474, 259, 475, 478, 479, 215, 287, 382, 150, 151, 416, 470, 418, 468, 472, 417, 392, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 390, 391, 471, 449, 448, 447, 32767, 32767, 414, 415, 419, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 103, 32767, 389, 422, 420, 421, 438, 439, 436, 437, 440, 32767, 32767, 32767, 441, 442, 443, 444, 316, 32767, 32767, 366, 364, 316, 112, 32767, 32767, 429, 430, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 534, 446, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 103, 32767, 101, 536, 411, 413, 503, 424, 425, 423, 393, 32767, 510, 32767, 103, 32767, 512, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 535, 32767, 542, 542, 32767, 496, 101, 195, 32767, 32767, 32767, 195, 195, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 603, 496, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 32767, 195, 111, 32767, 32767, 32767, 101, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 190, 32767, 268, 270, 103, 557, 195, 32767, 515, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 508, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 496, 434, 139, 32767, 139, 542, 426, 427, 428, 498, 542, 542, 542, 312, 289, 32767, 32767, 32767, 32767, 513, 513, 101, 101, 101, 101, 508, 32767, 32767, 32767, 32767, 112, 100, 100, 100, 100, 100, 104, 102, 32767, 32767, 32767, 32767, 223, 100, 32767, 102, 102, 32767, 32767, 223, 225, 212, 102, 227, 32767, 561, 562, 223, 102, 227, 227, 227, 247, 247, 485, 318, 102, 100, 102, 102, 197, 318, 318, 32767, 102, 485, 318, 485, 318, 199, 318, 318, 318, 485, 318, 32767, 102, 318, 214, 100, 100, 318, 32767, 32767, 32767, 498, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 222, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 529, 32767, 546, 559, 432, 433, 435, 544, 457, 458, 459, 460, 461, 462, 463, 465, 591, 32767, 502, 32767, 32767, 32767, 338, 601, 32767, 601, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 602, 32767, 542, 32767, 32767, 32767, 32767, 431, 9, 76, 491, 43, 44, 52, 58, 519, 520, 521, 522, 516, 517, 523, 518, 32767, 32767, 524, 567, 32767, 32767, 543, 594, 32767, 32767, 32767, 32767, 32767, 32767, 139, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 529, 32767, 137, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 525, 32767, 32767, 32767, 542, 32767, 32767, 32767, 32767, 314, 311, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 542, 32767, 32767, 32767, 32767, 32767, 291, 32767, 308, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 286, 32767, 32767, 381, 498, 294, 296, 297, 32767, 32767, 32767, 32767, 360, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 153, 153, 3, 3, 341, 153, 153, 153, 341, 341, 153, 341, 341, 341, 153, 153, 153, 153, 153, 153, 280, 185, 262, 265, 247, 247, 153, 352, 153); + protected $goto = array(196, 196, 1031, 703, 694, 430, 658, 1062, 1334, 1334, 424, 313, 314, 335, 573, 319, 429, 336, 431, 635, 651, 652, 850, 669, 670, 671, 1334, 167, 167, 167, 167, 221, 197, 193, 193, 177, 179, 216, 193, 193, 193, 193, 193, 194, 194, 194, 194, 194, 194, 188, 189, 190, 191, 192, 218, 216, 219, 534, 535, 420, 536, 538, 539, 540, 541, 542, 543, 544, 545, 1132, 168, 169, 170, 195, 171, 172, 173, 166, 174, 175, 176, 178, 215, 217, 220, 238, 243, 244, 245, 257, 258, 259, 260, 261, 262, 263, 264, 268, 269, 270, 271, 281, 282, 316, 317, 318, 425, 426, 427, 578, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 180, 237, 181, 198, 199, 200, 239, 188, 189, 190, 191, 192, 218, 1132, 201, 182, 183, 184, 202, 198, 185, 240, 203, 201, 165, 204, 205, 186, 206, 207, 208, 187, 209, 210, 211, 212, 213, 214, 853, 851, 278, 278, 278, 278, 418, 620, 620, 350, 570, 597, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1283, 1283, 831, 618, 655, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 353, 353, 353, 353, 866, 557, 550, 858, 825, 907, 902, 903, 916, 859, 904, 856, 905, 906, 857, 878, 457, 910, 865, 884, 546, 546, 546, 546, 831, 601, 831, 1084, 1079, 1080, 1081, 341, 550, 557, 566, 567, 343, 576, 599, 613, 614, 407, 408, 972, 465, 465, 667, 15, 668, 1323, 411, 412, 413, 465, 681, 348, 1233, 414, 1233, 478, 569, 346, 439, 1031, 1031, 1233, 993, 480, 1031, 393, 1031, 1031, 1104, 1105, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1315, 1315, 1315, 1315, 1233, 657, 1333, 1333, 1055, 1233, 1233, 1233, 1233, 1037, 1036, 1233, 1233, 1233, 1034, 1034, 1181, 354, 678, 949, 1333, 437, 1026, 1042, 1043, 337, 691, 354, 354, 827, 923, 691, 1040, 1041, 924, 691, 663, 1336, 939, 871, 939, 354, 354, 1281, 1281, 354, 679, 1350, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 552, 537, 537, 911, 354, 912, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 548, 564, 548, 574, 611, 730, 634, 636, 849, 548, 656, 475, 1308, 1309, 680, 684, 1007, 692, 701, 1003, 252, 252, 996, 970, 970, 968, 970, 729, 843, 549, 1005, 1000, 423, 455, 608, 1294, 846, 955, 966, 966, 966, 966, 325, 308, 455, 960, 967, 249, 249, 249, 249, 251, 253, 402, 351, 352, 683, 868, 551, 561, 449, 449, 449, 551, 1305, 561, 1305, 612, 396, 461, 1010, 1010, 1224, 1305, 395, 398, 558, 598, 602, 1015, 468, 577, 469, 470, 1310, 1311, 876, 552, 846, 1341, 1342, 964, 409, 702, 733, 324, 275, 324, 1317, 1317, 1317, 1317, 606, 621, 624, 625, 626, 627, 648, 649, 650, 705, 1068, 596, 1097, 874, 706, 476, 1228, 507, 697, 880, 1095, 1115, 432, 1301, 628, 630, 632, 432, 879, 867, 1067, 1071, 5, 1072, 6, 1038, 1038, 977, 0, 975, 662, 1049, 1045, 1046, 0, 0, 0, 0, 1226, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 928, 1120, 449, 965, 1070, 0, 0, 616, 1303, 1303, 1070, 1229, 1230, 1012, 499, 0, 500, 0, 0, 841, 0, 870, 506, 661, 991, 1113, 883, 1212, 941, 864, 0, 1213, 1216, 942, 1217, 0, 0, 1231, 1291, 1292, 0, 1223, 0, 0, 0, 846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255); + protected $gotoCheck = array(42, 42, 72, 9, 72, 65, 65, 126, 181, 181, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 85, 85, 26, 85, 85, 85, 181, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 15, 27, 23, 23, 23, 23, 43, 107, 107, 96, 170, 129, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 168, 168, 12, 55, 55, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 24, 24, 24, 24, 35, 75, 75, 15, 6, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 35, 82, 15, 35, 45, 106, 106, 106, 106, 12, 106, 12, 15, 15, 15, 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 81, 81, 49, 148, 148, 81, 75, 81, 179, 81, 81, 81, 148, 81, 177, 72, 81, 72, 83, 103, 81, 82, 72, 72, 72, 102, 83, 72, 61, 72, 72, 143, 143, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 9, 9, 9, 9, 72, 63, 180, 180, 113, 72, 72, 72, 72, 117, 117, 72, 72, 72, 88, 88, 150, 14, 88, 88, 180, 112, 88, 88, 88, 29, 7, 14, 14, 7, 72, 7, 118, 118, 72, 7, 119, 180, 9, 39, 9, 14, 14, 169, 169, 14, 115, 14, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 14, 171, 171, 64, 14, 64, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 19, 48, 19, 2, 2, 48, 48, 48, 25, 19, 48, 174, 174, 174, 48, 48, 48, 48, 48, 48, 5, 5, 25, 25, 25, 25, 25, 25, 18, 25, 25, 25, 13, 19, 13, 14, 22, 91, 19, 19, 19, 19, 167, 167, 19, 19, 19, 5, 5, 5, 5, 5, 5, 28, 96, 96, 14, 37, 9, 9, 23, 23, 23, 9, 129, 9, 129, 79, 9, 9, 106, 106, 159, 129, 58, 58, 58, 58, 58, 109, 9, 9, 9, 9, 176, 176, 9, 14, 22, 9, 9, 92, 92, 92, 98, 24, 24, 24, 129, 129, 129, 129, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 128, 8, 8, 9, 8, 156, 20, 8, 8, 41, 8, 146, 116, 129, 84, 84, 84, 116, 16, 16, 16, 16, 46, 131, 46, 116, 116, 95, -1, 16, 116, 116, 116, 116, -1, -1, -1, -1, 14, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 17, 17, 23, 16, 129, -1, -1, 17, 129, 129, 129, 20, 20, 17, 154, -1, 154, -1, -1, 20, -1, 17, 154, 17, 17, 16, 16, 78, 78, 17, -1, 78, 78, 78, 78, -1, -1, 20, 20, 20, -1, 17, -1, -1, -1, 22, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5, 5); + protected $gotoBase = array(0, 0, -339, 0, 0, 386, 195, 312, 472, -10, 0, 0, -109, 62, 13, -184, 46, 65, 86, 102, 93, 0, 125, 162, 197, 371, 18, 160, 83, 22, 0, 0, 0, 0, 0, -166, 0, 85, 0, 9, 0, 48, -1, 157, 0, 207, -232, 0, -340, 223, 0, 0, 0, 0, 0, 148, 0, 0, 396, 0, 0, 231, 0, 52, 334, -236, 0, 0, 0, 0, 0, 0, -5, 0, 0, -139, 0, 0, 149, 91, 112, -245, -58, -205, 15, -695, 0, 0, 28, 0, 0, 75, 154, 0, 0, 64, -310, 0, 55, 0, 0, 0, 235, 221, 0, 0, 196, -71, 0, 77, 0, 0, 37, 24, 0, 56, 219, 23, 40, 39, 0, 0, 0, 0, 0, 0, 5, 0, 106, 166, 0, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 47, 0, 214, 0, 35, 0, 0, 0, 49, 0, 45, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 88, -56, 95, 144, 111, 0, 0, 78, 0, 80, 229, 0, 222, -12, -299, 0, 0); + protected $gotoDefault = array(-32768, 511, 737, 4, 738, 932, 814, 823, 594, 528, 704, 347, 622, 421, 1299, 909, 1119, 575, 842, 1242, 1250, 456, 845, 330, 727, 891, 892, 893, 399, 385, 391, 397, 646, 623, 493, 877, 452, 869, 485, 872, 451, 881, 164, 417, 509, 885, 3, 888, 554, 919, 386, 896, 387, 674, 898, 560, 900, 901, 394, 400, 401, 1124, 568, 619, 913, 256, 562, 914, 384, 915, 922, 389, 392, 685, 464, 504, 498, 410, 1099, 563, 605, 643, 446, 472, 617, 629, 615, 479, 433, 415, 329, 954, 962, 486, 462, 976, 349, 984, 735, 1131, 637, 488, 992, 638, 999, 1002, 529, 530, 477, 1014, 272, 1017, 489, 12, 664, 1028, 1029, 665, 639, 1051, 640, 666, 641, 1053, 471, 595, 1061, 453, 1069, 1287, 454, 1073, 266, 1076, 277, 416, 434, 1082, 1083, 9, 1089, 695, 696, 11, 276, 508, 1114, 686, 450, 1130, 438, 1200, 1202, 556, 490, 1220, 1219, 677, 505, 1225, 447, 1290, 448, 531, 473, 315, 532, 307, 333, 312, 547, 294, 334, 533, 474, 1296, 1304, 331, 31, 1324, 1335, 342, 572, 610); + protected $ruleToNonTerminal = array(0, 1, 3, 3, 2, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 9, 10, 11, 11, 11, 12, 12, 13, 13, 14, 15, 15, 16, 16, 17, 17, 18, 18, 21, 21, 22, 23, 23, 24, 24, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 29, 29, 30, 30, 32, 34, 34, 28, 36, 36, 33, 38, 38, 35, 35, 37, 37, 39, 39, 31, 40, 40, 41, 43, 44, 44, 45, 45, 46, 46, 48, 47, 47, 47, 47, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 25, 25, 68, 68, 71, 71, 70, 69, 69, 62, 74, 74, 75, 75, 76, 76, 77, 77, 78, 78, 79, 79, 26, 26, 27, 27, 27, 27, 27, 87, 87, 89, 89, 82, 82, 90, 90, 91, 91, 91, 83, 83, 86, 86, 84, 84, 92, 93, 93, 56, 56, 64, 64, 67, 67, 67, 66, 94, 94, 95, 57, 57, 57, 57, 96, 96, 97, 97, 98, 98, 99, 100, 100, 101, 101, 102, 102, 54, 54, 50, 50, 104, 52, 52, 105, 51, 51, 53, 53, 63, 63, 63, 63, 80, 80, 108, 108, 110, 110, 111, 111, 111, 111, 109, 109, 109, 113, 113, 113, 113, 88, 88, 116, 116, 116, 117, 117, 114, 114, 118, 118, 120, 120, 121, 121, 115, 122, 122, 119, 123, 123, 123, 123, 112, 112, 81, 81, 81, 20, 20, 20, 125, 124, 124, 126, 126, 126, 126, 59, 127, 127, 128, 60, 130, 130, 131, 131, 132, 132, 85, 133, 133, 133, 133, 133, 133, 133, 138, 138, 139, 139, 140, 140, 140, 140, 140, 141, 142, 142, 137, 137, 134, 134, 136, 136, 144, 144, 143, 143, 143, 143, 143, 143, 143, 135, 145, 145, 147, 146, 146, 61, 103, 148, 148, 55, 55, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 155, 149, 149, 154, 154, 157, 158, 158, 159, 160, 161, 161, 161, 161, 19, 19, 72, 72, 72, 72, 150, 150, 150, 150, 163, 163, 151, 151, 153, 153, 153, 156, 156, 168, 168, 168, 168, 168, 168, 168, 168, 168, 169, 169, 169, 107, 171, 171, 171, 171, 152, 152, 152, 152, 152, 152, 152, 152, 58, 58, 166, 166, 166, 166, 172, 172, 162, 162, 162, 173, 173, 173, 173, 173, 173, 73, 73, 65, 65, 65, 65, 129, 129, 129, 129, 176, 175, 165, 165, 165, 165, 165, 165, 165, 164, 164, 164, 174, 174, 174, 174, 106, 170, 178, 178, 177, 177, 179, 179, 179, 179, 179, 179, 179, 179, 167, 167, 167, 167, 181, 182, 180, 180, 180, 180, 180, 180, 180, 180, 183, 183, 183, 183); + protected $ruleToLength = array(1, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 2, 1, 3, 4, 1, 2, 0, 1, 1, 1, 1, 1, 3, 5, 4, 3, 4, 2, 3, 1, 1, 7, 6, 2, 3, 1, 2, 3, 1, 2, 3, 1, 1, 3, 1, 3, 1, 2, 2, 3, 1, 3, 2, 3, 1, 3, 3, 2, 0, 1, 1, 1, 1, 1, 3, 7, 10, 5, 7, 9, 5, 3, 3, 3, 3, 3, 3, 1, 2, 5, 7, 9, 6, 5, 6, 3, 2, 1, 1, 1, 0, 2, 1, 3, 8, 0, 4, 2, 1, 3, 0, 1, 0, 1, 0, 1, 3, 1, 1, 1, 8, 9, 7, 8, 7, 6, 8, 0, 2, 0, 2, 1, 2, 1, 2, 1, 1, 1, 0, 2, 0, 2, 0, 2, 2, 1, 3, 1, 4, 1, 4, 1, 1, 4, 2, 1, 3, 3, 3, 4, 4, 5, 0, 2, 4, 3, 1, 1, 7, 0, 2, 1, 3, 3, 4, 1, 4, 0, 2, 5, 0, 2, 6, 0, 2, 0, 3, 1, 2, 1, 1, 2, 0, 1, 3, 0, 2, 1, 1, 1, 1, 6, 8, 6, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 1, 3, 3, 3, 3, 3, 1, 3, 3, 1, 1, 2, 1, 1, 0, 1, 0, 2, 2, 2, 4, 3, 1, 1, 3, 1, 2, 2, 3, 2, 3, 1, 1, 2, 3, 1, 1, 3, 2, 0, 1, 5, 5, 6, 10, 3, 5, 1, 1, 3, 0, 2, 4, 5, 4, 4, 4, 3, 1, 1, 1, 1, 1, 1, 0, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 3, 1, 1, 3, 2, 2, 3, 1, 0, 1, 1, 3, 3, 3, 4, 1, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 4, 3, 4, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 3, 2, 1, 2, 4, 2, 2, 8, 9, 8, 9, 9, 10, 9, 10, 8, 3, 2, 0, 4, 2, 1, 3, 2, 1, 2, 2, 2, 4, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 0, 3, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 5, 3, 3, 4, 1, 1, 3, 1, 1, 1, 1, 1, 3, 2, 3, 0, 1, 1, 3, 1, 1, 1, 1, 1, 3, 1, 1, 4, 4, 1, 4, 4, 0, 1, 1, 1, 3, 3, 1, 4, 2, 2, 1, 3, 1, 4, 4, 3, 3, 3, 3, 1, 3, 1, 1, 3, 1, 1, 4, 1, 1, 1, 3, 1, 1, 2, 1, 3, 4, 3, 2, 0, 2, 2, 1, 2, 1, 1, 1, 4, 3, 3, 3, 3, 6, 3, 1, 1, 2, 1); protected function initReduceCallbacks() { $this->reduceCallbacks = [0 => function ($stackPos) { @@ -17456,17 +17619,19 @@ class Php7 extends \PHPUnit\PhpParser\ParserAbstract }, 149 => function ($stackPos) { $this->semValue = array($this->semStack[$stackPos - (1 - 1)]); }, 150 => function ($stackPos) { - $this->semValue = new Node\Const_($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); + $this->semValue = new Node\Const_(new Node\Identifier($this->semStack[$stackPos - (3 - 1)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributeStack[$stackPos - (3 - 1)]), $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); }, 151 => function ($stackPos) { + $this->semValue = new Node\Const_(new Node\Identifier($this->semStack[$stackPos - (3 - 1)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributeStack[$stackPos - (3 - 1)]), $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); + }, 152 => function ($stackPos) { if (\is_array($this->semStack[$stackPos - (2 - 2)])) { $this->semValue = \array_merge($this->semStack[$stackPos - (2 - 1)], $this->semStack[$stackPos - (2 - 2)]); } else { $this->semStack[$stackPos - (2 - 1)][] = $this->semStack[$stackPos - (2 - 2)]; $this->semValue = $this->semStack[$stackPos - (2 - 1)]; } - }, 152 => function ($stackPos) { - $this->semValue = array(); }, 153 => function ($stackPos) { + $this->semValue = array(); + }, 154 => function ($stackPos) { $startAttributes = $this->lookaheadStartAttributes; if (isset($startAttributes['comments'])) { $nop = new Stmt\Nop($this->createCommentNopAttributes($startAttributes['comments'])); @@ -17477,15 +17642,15 @@ class Php7 extends \PHPUnit\PhpParser\ParserAbstract $this->semStack[$stackPos - (1 - 1)][] = $nop; } $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 154 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos - (1 - 1)]; }, 155 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; }, 156 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; }, 157 => function ($stackPos) { - throw new Error('__HALT_COMPILER() can only be used from the outermost scope', $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); + $this->semValue = $this->semStack[$stackPos - (1 - 1)]; }, 158 => function ($stackPos) { + throw new Error('__HALT_COMPILER() can only be used from the outermost scope', $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); + }, 159 => function ($stackPos) { if ($this->semStack[$stackPos - (3 - 2)]) { $this->semValue = $this->semStack[$stackPos - (3 - 2)]; $attrs = $this->startAttributeStack[$stackPos - (3 - 1)]; @@ -17504,33 +17669,33 @@ class Php7 extends \PHPUnit\PhpParser\ParserAbstract $this->semValue = array(); } } - }, 159 => function ($stackPos) { - $this->semValue = new Stmt\If_($this->semStack[$stackPos - (7 - 3)], ['stmts' => \is_array($this->semStack[$stackPos - (7 - 5)]) ? $this->semStack[$stackPos - (7 - 5)] : array($this->semStack[$stackPos - (7 - 5)]), 'elseifs' => $this->semStack[$stackPos - (7 - 6)], 'else' => $this->semStack[$stackPos - (7 - 7)]], $this->startAttributeStack[$stackPos - (7 - 1)] + $this->endAttributes); }, 160 => function ($stackPos) { - $this->semValue = new Stmt\If_($this->semStack[$stackPos - (10 - 3)], ['stmts' => $this->semStack[$stackPos - (10 - 6)], 'elseifs' => $this->semStack[$stackPos - (10 - 7)], 'else' => $this->semStack[$stackPos - (10 - 8)]], $this->startAttributeStack[$stackPos - (10 - 1)] + $this->endAttributes); + $this->semValue = new Stmt\If_($this->semStack[$stackPos - (7 - 3)], ['stmts' => \is_array($this->semStack[$stackPos - (7 - 5)]) ? $this->semStack[$stackPos - (7 - 5)] : array($this->semStack[$stackPos - (7 - 5)]), 'elseifs' => $this->semStack[$stackPos - (7 - 6)], 'else' => $this->semStack[$stackPos - (7 - 7)]], $this->startAttributeStack[$stackPos - (7 - 1)] + $this->endAttributes); }, 161 => function ($stackPos) { - $this->semValue = new Stmt\While_($this->semStack[$stackPos - (5 - 3)], $this->semStack[$stackPos - (5 - 5)], $this->startAttributeStack[$stackPos - (5 - 1)] + $this->endAttributes); + $this->semValue = new Stmt\If_($this->semStack[$stackPos - (10 - 3)], ['stmts' => $this->semStack[$stackPos - (10 - 6)], 'elseifs' => $this->semStack[$stackPos - (10 - 7)], 'else' => $this->semStack[$stackPos - (10 - 8)]], $this->startAttributeStack[$stackPos - (10 - 1)] + $this->endAttributes); }, 162 => function ($stackPos) { - $this->semValue = new Stmt\Do_($this->semStack[$stackPos - (7 - 5)], \is_array($this->semStack[$stackPos - (7 - 2)]) ? $this->semStack[$stackPos - (7 - 2)] : array($this->semStack[$stackPos - (7 - 2)]), $this->startAttributeStack[$stackPos - (7 - 1)] + $this->endAttributes); + $this->semValue = new Stmt\While_($this->semStack[$stackPos - (5 - 3)], $this->semStack[$stackPos - (5 - 5)], $this->startAttributeStack[$stackPos - (5 - 1)] + $this->endAttributes); }, 163 => function ($stackPos) { - $this->semValue = new Stmt\For_(['init' => $this->semStack[$stackPos - (9 - 3)], 'cond' => $this->semStack[$stackPos - (9 - 5)], 'loop' => $this->semStack[$stackPos - (9 - 7)], 'stmts' => $this->semStack[$stackPos - (9 - 9)]], $this->startAttributeStack[$stackPos - (9 - 1)] + $this->endAttributes); + $this->semValue = new Stmt\Do_($this->semStack[$stackPos - (7 - 5)], \is_array($this->semStack[$stackPos - (7 - 2)]) ? $this->semStack[$stackPos - (7 - 2)] : array($this->semStack[$stackPos - (7 - 2)]), $this->startAttributeStack[$stackPos - (7 - 1)] + $this->endAttributes); }, 164 => function ($stackPos) { - $this->semValue = new Stmt\Switch_($this->semStack[$stackPos - (5 - 3)], $this->semStack[$stackPos - (5 - 5)], $this->startAttributeStack[$stackPos - (5 - 1)] + $this->endAttributes); + $this->semValue = new Stmt\For_(['init' => $this->semStack[$stackPos - (9 - 3)], 'cond' => $this->semStack[$stackPos - (9 - 5)], 'loop' => $this->semStack[$stackPos - (9 - 7)], 'stmts' => $this->semStack[$stackPos - (9 - 9)]], $this->startAttributeStack[$stackPos - (9 - 1)] + $this->endAttributes); }, 165 => function ($stackPos) { - $this->semValue = new Stmt\Break_($this->semStack[$stackPos - (3 - 2)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); + $this->semValue = new Stmt\Switch_($this->semStack[$stackPos - (5 - 3)], $this->semStack[$stackPos - (5 - 5)], $this->startAttributeStack[$stackPos - (5 - 1)] + $this->endAttributes); }, 166 => function ($stackPos) { - $this->semValue = new Stmt\Continue_($this->semStack[$stackPos - (3 - 2)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); + $this->semValue = new Stmt\Break_($this->semStack[$stackPos - (3 - 2)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); }, 167 => function ($stackPos) { - $this->semValue = new Stmt\Return_($this->semStack[$stackPos - (3 - 2)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); + $this->semValue = new Stmt\Continue_($this->semStack[$stackPos - (3 - 2)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); }, 168 => function ($stackPos) { - $this->semValue = new Stmt\Global_($this->semStack[$stackPos - (3 - 2)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); + $this->semValue = new Stmt\Return_($this->semStack[$stackPos - (3 - 2)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); }, 169 => function ($stackPos) { - $this->semValue = new Stmt\Static_($this->semStack[$stackPos - (3 - 2)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); + $this->semValue = new Stmt\Global_($this->semStack[$stackPos - (3 - 2)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); }, 170 => function ($stackPos) { - $this->semValue = new Stmt\Echo_($this->semStack[$stackPos - (3 - 2)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); + $this->semValue = new Stmt\Static_($this->semStack[$stackPos - (3 - 2)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); }, 171 => function ($stackPos) { - $this->semValue = new Stmt\InlineHTML($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); + $this->semValue = new Stmt\Echo_($this->semStack[$stackPos - (3 - 2)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); }, 172 => function ($stackPos) { + $this->semValue = new Stmt\InlineHTML($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); + }, 173 => function ($stackPos) { $e = $this->semStack[$stackPos - (2 - 1)]; if ($e instanceof Expr\Throw_) { // For backwards-compatibility reasons, convert throw in statement position into @@ -17539,29 +17704,29 @@ class Php7 extends \PHPUnit\PhpParser\ParserAbstract } else { $this->semValue = new Stmt\Expression($e, $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); } - }, 173 => function ($stackPos) { - $this->semValue = new Stmt\Unset_($this->semStack[$stackPos - (5 - 3)], $this->startAttributeStack[$stackPos - (5 - 1)] + $this->endAttributes); }, 174 => function ($stackPos) { - $this->semValue = new Stmt\Foreach_($this->semStack[$stackPos - (7 - 3)], $this->semStack[$stackPos - (7 - 5)][0], ['keyVar' => null, 'byRef' => $this->semStack[$stackPos - (7 - 5)][1], 'stmts' => $this->semStack[$stackPos - (7 - 7)]], $this->startAttributeStack[$stackPos - (7 - 1)] + $this->endAttributes); + $this->semValue = new Stmt\Unset_($this->semStack[$stackPos - (5 - 3)], $this->startAttributeStack[$stackPos - (5 - 1)] + $this->endAttributes); }, 175 => function ($stackPos) { - $this->semValue = new Stmt\Foreach_($this->semStack[$stackPos - (9 - 3)], $this->semStack[$stackPos - (9 - 7)][0], ['keyVar' => $this->semStack[$stackPos - (9 - 5)], 'byRef' => $this->semStack[$stackPos - (9 - 7)][1], 'stmts' => $this->semStack[$stackPos - (9 - 9)]], $this->startAttributeStack[$stackPos - (9 - 1)] + $this->endAttributes); + $this->semValue = new Stmt\Foreach_($this->semStack[$stackPos - (7 - 3)], $this->semStack[$stackPos - (7 - 5)][0], ['keyVar' => null, 'byRef' => $this->semStack[$stackPos - (7 - 5)][1], 'stmts' => $this->semStack[$stackPos - (7 - 7)]], $this->startAttributeStack[$stackPos - (7 - 1)] + $this->endAttributes); }, 176 => function ($stackPos) { - $this->semValue = new Stmt\Foreach_($this->semStack[$stackPos - (6 - 3)], new Expr\Error($this->startAttributeStack[$stackPos - (6 - 4)] + $this->endAttributeStack[$stackPos - (6 - 4)]), ['stmts' => $this->semStack[$stackPos - (6 - 6)]], $this->startAttributeStack[$stackPos - (6 - 1)] + $this->endAttributes); + $this->semValue = new Stmt\Foreach_($this->semStack[$stackPos - (9 - 3)], $this->semStack[$stackPos - (9 - 7)][0], ['keyVar' => $this->semStack[$stackPos - (9 - 5)], 'byRef' => $this->semStack[$stackPos - (9 - 7)][1], 'stmts' => $this->semStack[$stackPos - (9 - 9)]], $this->startAttributeStack[$stackPos - (9 - 1)] + $this->endAttributes); }, 177 => function ($stackPos) { - $this->semValue = new Stmt\Declare_($this->semStack[$stackPos - (5 - 3)], $this->semStack[$stackPos - (5 - 5)], $this->startAttributeStack[$stackPos - (5 - 1)] + $this->endAttributes); + $this->semValue = new Stmt\Foreach_($this->semStack[$stackPos - (6 - 3)], new Expr\Error($this->startAttributeStack[$stackPos - (6 - 4)] + $this->endAttributeStack[$stackPos - (6 - 4)]), ['stmts' => $this->semStack[$stackPos - (6 - 6)]], $this->startAttributeStack[$stackPos - (6 - 1)] + $this->endAttributes); }, 178 => function ($stackPos) { + $this->semValue = new Stmt\Declare_($this->semStack[$stackPos - (5 - 3)], $this->semStack[$stackPos - (5 - 5)], $this->startAttributeStack[$stackPos - (5 - 1)] + $this->endAttributes); + }, 179 => function ($stackPos) { $this->semValue = new Stmt\TryCatch($this->semStack[$stackPos - (6 - 3)], $this->semStack[$stackPos - (6 - 5)], $this->semStack[$stackPos - (6 - 6)], $this->startAttributeStack[$stackPos - (6 - 1)] + $this->endAttributes); $this->checkTryCatch($this->semValue); - }, 179 => function ($stackPos) { - $this->semValue = new Stmt\Goto_($this->semStack[$stackPos - (3 - 2)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); }, 180 => function ($stackPos) { - $this->semValue = new Stmt\Label($this->semStack[$stackPos - (2 - 1)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); + $this->semValue = new Stmt\Goto_($this->semStack[$stackPos - (3 - 2)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); }, 181 => function ($stackPos) { + $this->semValue = new Stmt\Label($this->semStack[$stackPos - (2 - 1)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); + }, 182 => function ($stackPos) { $this->semValue = array(); /* means: no statement */ - }, 182 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos - (1 - 1)]; }, 183 => function ($stackPos) { + $this->semValue = $this->semStack[$stackPos - (1 - 1)]; + }, 184 => function ($stackPos) { $startAttributes = $this->startAttributeStack[$stackPos - (1 - 1)]; if (isset($startAttributes['comments'])) { $this->semValue = new Stmt\Nop($startAttributes + $this->endAttributes); @@ -17572,252 +17737,252 @@ class Php7 extends \PHPUnit\PhpParser\ParserAbstract $this->semValue = array(); } /* means: no statement */ - }, 184 => function ($stackPos) { - $this->semValue = array(); }, 185 => function ($stackPos) { + $this->semValue = array(); + }, 186 => function ($stackPos) { $this->semStack[$stackPos - (2 - 1)][] = $this->semStack[$stackPos - (2 - 2)]; $this->semValue = $this->semStack[$stackPos - (2 - 1)]; - }, 186 => function ($stackPos) { - $this->semValue = array($this->semStack[$stackPos - (1 - 1)]); }, 187 => function ($stackPos) { + $this->semValue = array($this->semStack[$stackPos - (1 - 1)]); + }, 188 => function ($stackPos) { $this->semStack[$stackPos - (3 - 1)][] = $this->semStack[$stackPos - (3 - 3)]; $this->semValue = $this->semStack[$stackPos - (3 - 1)]; - }, 188 => function ($stackPos) { - $this->semValue = new Stmt\Catch_($this->semStack[$stackPos - (8 - 3)], $this->semStack[$stackPos - (8 - 4)], $this->semStack[$stackPos - (8 - 7)], $this->startAttributeStack[$stackPos - (8 - 1)] + $this->endAttributes); }, 189 => function ($stackPos) { - $this->semValue = null; + $this->semValue = new Stmt\Catch_($this->semStack[$stackPos - (8 - 3)], $this->semStack[$stackPos - (8 - 4)], $this->semStack[$stackPos - (8 - 7)], $this->startAttributeStack[$stackPos - (8 - 1)] + $this->endAttributes); }, 190 => function ($stackPos) { - $this->semValue = new Stmt\Finally_($this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); + $this->semValue = null; }, 191 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos - (2 - 1)]; + $this->semValue = new Stmt\Finally_($this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); }, 192 => function ($stackPos) { - $this->semValue = array($this->semStack[$stackPos - (1 - 1)]); + $this->semValue = $this->semStack[$stackPos - (2 - 1)]; }, 193 => function ($stackPos) { + $this->semValue = array($this->semStack[$stackPos - (1 - 1)]); + }, 194 => function ($stackPos) { $this->semStack[$stackPos - (3 - 1)][] = $this->semStack[$stackPos - (3 - 3)]; $this->semValue = $this->semStack[$stackPos - (3 - 1)]; - }, 194 => function ($stackPos) { - $this->semValue = \false; }, 195 => function ($stackPos) { - $this->semValue = \true; - }, 196 => function ($stackPos) { $this->semValue = \false; - }, 197 => function ($stackPos) { + }, 196 => function ($stackPos) { $this->semValue = \true; - }, 198 => function ($stackPos) { + }, 197 => function ($stackPos) { $this->semValue = \false; - }, 199 => function ($stackPos) { + }, 198 => function ($stackPos) { $this->semValue = \true; + }, 199 => function ($stackPos) { + $this->semValue = \false; }, 200 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos - (3 - 2)]; + $this->semValue = \true; }, 201 => function ($stackPos) { - $this->semValue = []; + $this->semValue = $this->semStack[$stackPos - (3 - 2)]; }, 202 => function ($stackPos) { - $this->semValue = new Stmt\Function_($this->semStack[$stackPos - (8 - 3)], ['byRef' => $this->semStack[$stackPos - (8 - 2)], 'params' => $this->semStack[$stackPos - (8 - 5)], 'returnType' => $this->semStack[$stackPos - (8 - 7)], 'stmts' => $this->semStack[$stackPos - (8 - 8)], 'attrGroups' => []], $this->startAttributeStack[$stackPos - (8 - 1)] + $this->endAttributes); + $this->semValue = []; }, 203 => function ($stackPos) { - $this->semValue = new Stmt\Function_($this->semStack[$stackPos - (9 - 4)], ['byRef' => $this->semStack[$stackPos - (9 - 3)], 'params' => $this->semStack[$stackPos - (9 - 6)], 'returnType' => $this->semStack[$stackPos - (9 - 8)], 'stmts' => $this->semStack[$stackPos - (9 - 9)], 'attrGroups' => $this->semStack[$stackPos - (9 - 1)]], $this->startAttributeStack[$stackPos - (9 - 1)] + $this->endAttributes); + $this->semValue = $this->semStack[$stackPos - (1 - 1)]; }, 204 => function ($stackPos) { + $this->semValue = new Node\Identifier($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); + }, 205 => function ($stackPos) { + $this->semValue = new Stmt\Function_($this->semStack[$stackPos - (8 - 3)], ['byRef' => $this->semStack[$stackPos - (8 - 2)], 'params' => $this->semStack[$stackPos - (8 - 5)], 'returnType' => $this->semStack[$stackPos - (8 - 7)], 'stmts' => $this->semStack[$stackPos - (8 - 8)], 'attrGroups' => []], $this->startAttributeStack[$stackPos - (8 - 1)] + $this->endAttributes); + }, 206 => function ($stackPos) { + $this->semValue = new Stmt\Function_($this->semStack[$stackPos - (9 - 4)], ['byRef' => $this->semStack[$stackPos - (9 - 3)], 'params' => $this->semStack[$stackPos - (9 - 6)], 'returnType' => $this->semStack[$stackPos - (9 - 8)], 'stmts' => $this->semStack[$stackPos - (9 - 9)], 'attrGroups' => $this->semStack[$stackPos - (9 - 1)]], $this->startAttributeStack[$stackPos - (9 - 1)] + $this->endAttributes); + }, 207 => function ($stackPos) { + $this->semValue = new Stmt\Class_($this->semStack[$stackPos - (7 - 2)], ['type' => $this->semStack[$stackPos - (7 - 1)], 'extends' => $this->semStack[$stackPos - (7 - 3)], 'implements' => $this->semStack[$stackPos - (7 - 4)], 'stmts' => $this->semStack[$stackPos - (7 - 6)], 'attrGroups' => []], $this->startAttributeStack[$stackPos - (7 - 1)] + $this->endAttributes); + $this->checkClass($this->semValue, $stackPos - (7 - 2)); + }, 208 => function ($stackPos) { $this->semValue = new Stmt\Class_($this->semStack[$stackPos - (8 - 3)], ['type' => $this->semStack[$stackPos - (8 - 2)], 'extends' => $this->semStack[$stackPos - (8 - 4)], 'implements' => $this->semStack[$stackPos - (8 - 5)], 'stmts' => $this->semStack[$stackPos - (8 - 7)], 'attrGroups' => $this->semStack[$stackPos - (8 - 1)]], $this->startAttributeStack[$stackPos - (8 - 1)] + $this->endAttributes); $this->checkClass($this->semValue, $stackPos - (8 - 3)); - }, 205 => function ($stackPos) { + }, 209 => function ($stackPos) { $this->semValue = new Stmt\Interface_($this->semStack[$stackPos - (7 - 3)], ['extends' => $this->semStack[$stackPos - (7 - 4)], 'stmts' => $this->semStack[$stackPos - (7 - 6)], 'attrGroups' => $this->semStack[$stackPos - (7 - 1)]], $this->startAttributeStack[$stackPos - (7 - 1)] + $this->endAttributes); $this->checkInterface($this->semValue, $stackPos - (7 - 3)); - }, 206 => function ($stackPos) { + }, 210 => function ($stackPos) { $this->semValue = new Stmt\Trait_($this->semStack[$stackPos - (6 - 3)], ['stmts' => $this->semStack[$stackPos - (6 - 5)], 'attrGroups' => $this->semStack[$stackPos - (6 - 1)]], $this->startAttributeStack[$stackPos - (6 - 1)] + $this->endAttributes); - }, 207 => function ($stackPos) { + }, 211 => function ($stackPos) { $this->semValue = new Stmt\Enum_($this->semStack[$stackPos - (8 - 3)], ['scalarType' => $this->semStack[$stackPos - (8 - 4)], 'implements' => $this->semStack[$stackPos - (8 - 5)], 'stmts' => $this->semStack[$stackPos - (8 - 7)], 'attrGroups' => $this->semStack[$stackPos - (8 - 1)]], $this->startAttributeStack[$stackPos - (8 - 1)] + $this->endAttributes); $this->checkEnum($this->semValue, $stackPos - (8 - 3)); - }, 208 => function ($stackPos) { + }, 212 => function ($stackPos) { $this->semValue = null; - }, 209 => function ($stackPos) { + }, 213 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (2 - 2)]; - }, 210 => function ($stackPos) { + }, 214 => function ($stackPos) { $this->semValue = null; - }, 211 => function ($stackPos) { + }, 215 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (2 - 2)]; - }, 212 => function ($stackPos) { + }, 216 => function ($stackPos) { $this->semValue = 0; - }, 213 => function ($stackPos) { + }, 217 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (2 - 1)]; - }, 214 => function ($stackPos) { + }, 218 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 215 => function ($stackPos) { + }, 219 => function ($stackPos) { $this->checkClassModifier($this->semStack[$stackPos - (2 - 1)], $this->semStack[$stackPos - (2 - 2)], $stackPos - (2 - 2)); $this->semValue = $this->semStack[$stackPos - (2 - 1)] | $this->semStack[$stackPos - (2 - 2)]; - }, 216 => function ($stackPos) { + }, 220 => function ($stackPos) { $this->semValue = Stmt\Class_::MODIFIER_ABSTRACT; - }, 217 => function ($stackPos) { + }, 221 => function ($stackPos) { $this->semValue = Stmt\Class_::MODIFIER_FINAL; - }, 218 => function ($stackPos) { + }, 222 => function ($stackPos) { $this->semValue = Stmt\Class_::MODIFIER_READONLY; - }, 219 => function ($stackPos) { + }, 223 => function ($stackPos) { $this->semValue = null; - }, 220 => function ($stackPos) { + }, 224 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (2 - 2)]; - }, 221 => function ($stackPos) { + }, 225 => function ($stackPos) { $this->semValue = array(); - }, 222 => function ($stackPos) { + }, 226 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (2 - 2)]; - }, 223 => function ($stackPos) { + }, 227 => function ($stackPos) { $this->semValue = array(); - }, 224 => function ($stackPos) { + }, 228 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (2 - 2)]; - }, 225 => function ($stackPos) { + }, 229 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (2 - 1)]; - }, 226 => function ($stackPos) { + }, 230 => function ($stackPos) { $this->semValue = array($this->semStack[$stackPos - (1 - 1)]); - }, 227 => function ($stackPos) { + }, 231 => function ($stackPos) { $this->semStack[$stackPos - (3 - 1)][] = $this->semStack[$stackPos - (3 - 3)]; $this->semValue = $this->semStack[$stackPos - (3 - 1)]; - }, 228 => function ($stackPos) { + }, 232 => function ($stackPos) { $this->semValue = \is_array($this->semStack[$stackPos - (1 - 1)]) ? $this->semStack[$stackPos - (1 - 1)] : array($this->semStack[$stackPos - (1 - 1)]); - }, 229 => function ($stackPos) { + }, 233 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (4 - 2)]; - }, 230 => function ($stackPos) { + }, 234 => function ($stackPos) { $this->semValue = \is_array($this->semStack[$stackPos - (1 - 1)]) ? $this->semStack[$stackPos - (1 - 1)] : array($this->semStack[$stackPos - (1 - 1)]); - }, 231 => function ($stackPos) { + }, 235 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (4 - 2)]; - }, 232 => function ($stackPos) { + }, 236 => function ($stackPos) { $this->semValue = \is_array($this->semStack[$stackPos - (1 - 1)]) ? $this->semStack[$stackPos - (1 - 1)] : array($this->semStack[$stackPos - (1 - 1)]); - }, 233 => function ($stackPos) { + }, 237 => function ($stackPos) { $this->semValue = null; - }, 234 => function ($stackPos) { + }, 238 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (4 - 2)]; - }, 235 => function ($stackPos) { + }, 239 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (2 - 1)]; - }, 236 => function ($stackPos) { + }, 240 => function ($stackPos) { $this->semValue = array($this->semStack[$stackPos - (1 - 1)]); - }, 237 => function ($stackPos) { + }, 241 => function ($stackPos) { $this->semStack[$stackPos - (3 - 1)][] = $this->semStack[$stackPos - (3 - 3)]; $this->semValue = $this->semStack[$stackPos - (3 - 1)]; - }, 238 => function ($stackPos) { + }, 242 => function ($stackPos) { $this->semValue = new Stmt\DeclareDeclare($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 239 => function ($stackPos) { + }, 243 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (3 - 2)]; - }, 240 => function ($stackPos) { + }, 244 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (4 - 3)]; - }, 241 => function ($stackPos) { + }, 245 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (4 - 2)]; - }, 242 => function ($stackPos) { + }, 246 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (5 - 3)]; - }, 243 => function ($stackPos) { + }, 247 => function ($stackPos) { $this->semValue = array(); - }, 244 => function ($stackPos) { + }, 248 => function ($stackPos) { $this->semStack[$stackPos - (2 - 1)][] = $this->semStack[$stackPos - (2 - 2)]; $this->semValue = $this->semStack[$stackPos - (2 - 1)]; - }, 245 => function ($stackPos) { + }, 249 => function ($stackPos) { $this->semValue = new Stmt\Case_($this->semStack[$stackPos - (4 - 2)], $this->semStack[$stackPos - (4 - 4)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 246 => function ($stackPos) { + }, 250 => function ($stackPos) { $this->semValue = new Stmt\Case_(null, $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 247 => function ($stackPos) { + }, 251 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos]; - }, 248 => function ($stackPos) { + }, 252 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos]; - }, 249 => function ($stackPos) { + }, 253 => function ($stackPos) { $this->semValue = new Expr\Match_($this->semStack[$stackPos - (7 - 3)], $this->semStack[$stackPos - (7 - 6)], $this->startAttributeStack[$stackPos - (7 - 1)] + $this->endAttributes); - }, 250 => function ($stackPos) { + }, 254 => function ($stackPos) { $this->semValue = []; - }, 251 => function ($stackPos) { + }, 255 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (2 - 1)]; - }, 252 => function ($stackPos) { + }, 256 => function ($stackPos) { $this->semValue = array($this->semStack[$stackPos - (1 - 1)]); - }, 253 => function ($stackPos) { + }, 257 => function ($stackPos) { $this->semStack[$stackPos - (3 - 1)][] = $this->semStack[$stackPos - (3 - 3)]; $this->semValue = $this->semStack[$stackPos - (3 - 1)]; - }, 254 => function ($stackPos) { + }, 258 => function ($stackPos) { $this->semValue = new Node\MatchArm($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 255 => function ($stackPos) { + }, 259 => function ($stackPos) { $this->semValue = new Node\MatchArm(null, $this->semStack[$stackPos - (4 - 4)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 256 => function ($stackPos) { + }, 260 => function ($stackPos) { $this->semValue = \is_array($this->semStack[$stackPos - (1 - 1)]) ? $this->semStack[$stackPos - (1 - 1)] : array($this->semStack[$stackPos - (1 - 1)]); - }, 257 => function ($stackPos) { + }, 261 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (4 - 2)]; - }, 258 => function ($stackPos) { + }, 262 => function ($stackPos) { $this->semValue = array(); - }, 259 => function ($stackPos) { + }, 263 => function ($stackPos) { $this->semStack[$stackPos - (2 - 1)][] = $this->semStack[$stackPos - (2 - 2)]; $this->semValue = $this->semStack[$stackPos - (2 - 1)]; - }, 260 => function ($stackPos) { + }, 264 => function ($stackPos) { $this->semValue = new Stmt\ElseIf_($this->semStack[$stackPos - (5 - 3)], \is_array($this->semStack[$stackPos - (5 - 5)]) ? $this->semStack[$stackPos - (5 - 5)] : array($this->semStack[$stackPos - (5 - 5)]), $this->startAttributeStack[$stackPos - (5 - 1)] + $this->endAttributes); - }, 261 => function ($stackPos) { + }, 265 => function ($stackPos) { $this->semValue = array(); - }, 262 => function ($stackPos) { + }, 266 => function ($stackPos) { $this->semStack[$stackPos - (2 - 1)][] = $this->semStack[$stackPos - (2 - 2)]; $this->semValue = $this->semStack[$stackPos - (2 - 1)]; - }, 263 => function ($stackPos) { + }, 267 => function ($stackPos) { $this->semValue = new Stmt\ElseIf_($this->semStack[$stackPos - (6 - 3)], $this->semStack[$stackPos - (6 - 6)], $this->startAttributeStack[$stackPos - (6 - 1)] + $this->endAttributes); - }, 264 => function ($stackPos) { + $this->fixupAlternativeElse($this->semValue); + }, 268 => function ($stackPos) { $this->semValue = null; - }, 265 => function ($stackPos) { + }, 269 => function ($stackPos) { $this->semValue = new Stmt\Else_(\is_array($this->semStack[$stackPos - (2 - 2)]) ? $this->semStack[$stackPos - (2 - 2)] : array($this->semStack[$stackPos - (2 - 2)]), $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 266 => function ($stackPos) { + }, 270 => function ($stackPos) { $this->semValue = null; - }, 267 => function ($stackPos) { + }, 271 => function ($stackPos) { $this->semValue = new Stmt\Else_($this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 268 => function ($stackPos) { + $this->fixupAlternativeElse($this->semValue); + }, 272 => function ($stackPos) { $this->semValue = array($this->semStack[$stackPos - (1 - 1)], \false); - }, 269 => function ($stackPos) { + }, 273 => function ($stackPos) { $this->semValue = array($this->semStack[$stackPos - (2 - 2)], \true); - }, 270 => function ($stackPos) { + }, 274 => function ($stackPos) { $this->semValue = array($this->semStack[$stackPos - (1 - 1)], \false); - }, 271 => function ($stackPos) { + }, 275 => function ($stackPos) { $this->semValue = array($this->semStack[$stackPos - (1 - 1)], \false); - }, 272 => function ($stackPos) { + }, 276 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (2 - 1)]; - }, 273 => function ($stackPos) { + }, 277 => function ($stackPos) { $this->semValue = array(); - }, 274 => function ($stackPos) { + }, 278 => function ($stackPos) { $this->semValue = array($this->semStack[$stackPos - (1 - 1)]); - }, 275 => function ($stackPos) { + }, 279 => function ($stackPos) { $this->semStack[$stackPos - (3 - 1)][] = $this->semStack[$stackPos - (3 - 3)]; $this->semValue = $this->semStack[$stackPos - (3 - 1)]; - }, 276 => function ($stackPos) { + }, 280 => function ($stackPos) { $this->semValue = 0; - }, 277 => function ($stackPos) { + }, 281 => function ($stackPos) { $this->checkModifier($this->semStack[$stackPos - (2 - 1)], $this->semStack[$stackPos - (2 - 2)], $stackPos - (2 - 2)); $this->semValue = $this->semStack[$stackPos - (2 - 1)] | $this->semStack[$stackPos - (2 - 2)]; - }, 278 => function ($stackPos) { + }, 282 => function ($stackPos) { $this->semValue = Stmt\Class_::MODIFIER_PUBLIC; - }, 279 => function ($stackPos) { + }, 283 => function ($stackPos) { $this->semValue = Stmt\Class_::MODIFIER_PROTECTED; - }, 280 => function ($stackPos) { + }, 284 => function ($stackPos) { $this->semValue = Stmt\Class_::MODIFIER_PRIVATE; - }, 281 => function ($stackPos) { + }, 285 => function ($stackPos) { $this->semValue = Stmt\Class_::MODIFIER_READONLY; - }, 282 => function ($stackPos) { + }, 286 => function ($stackPos) { $this->semValue = new Node\Param($this->semStack[$stackPos - (6 - 6)], null, $this->semStack[$stackPos - (6 - 3)], $this->semStack[$stackPos - (6 - 4)], $this->semStack[$stackPos - (6 - 5)], $this->startAttributeStack[$stackPos - (6 - 1)] + $this->endAttributes, $this->semStack[$stackPos - (6 - 2)], $this->semStack[$stackPos - (6 - 1)]); $this->checkParam($this->semValue); - }, 283 => function ($stackPos) { + }, 287 => function ($stackPos) { $this->semValue = new Node\Param($this->semStack[$stackPos - (8 - 6)], $this->semStack[$stackPos - (8 - 8)], $this->semStack[$stackPos - (8 - 3)], $this->semStack[$stackPos - (8 - 4)], $this->semStack[$stackPos - (8 - 5)], $this->startAttributeStack[$stackPos - (8 - 1)] + $this->endAttributes, $this->semStack[$stackPos - (8 - 2)], $this->semStack[$stackPos - (8 - 1)]); $this->checkParam($this->semValue); - }, 284 => function ($stackPos) { - $this->semValue = new Node\Param(new Expr\Error($this->startAttributeStack[$stackPos - (6 - 1)] + $this->endAttributes), null, $this->semStack[$stackPos - (6 - 3)], $this->semStack[$stackPos - (6 - 4)], $this->semStack[$stackPos - (6 - 5)], $this->startAttributeStack[$stackPos - (6 - 1)] + $this->endAttributes, $this->semStack[$stackPos - (6 - 2)], $this->semStack[$stackPos - (6 - 1)]); - }, 285 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 286 => function ($stackPos) { - $this->semValue = new Node\NullableType($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 287 => function ($stackPos) { - $this->semValue = new Node\UnionType($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); }, 288 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos - (1 - 1)]; + $this->semValue = new Node\Param(new Expr\Error($this->startAttributeStack[$stackPos - (6 - 1)] + $this->endAttributes), null, $this->semStack[$stackPos - (6 - 3)], $this->semStack[$stackPos - (6 - 4)], $this->semStack[$stackPos - (6 - 5)], $this->startAttributeStack[$stackPos - (6 - 1)] + $this->endAttributes, $this->semStack[$stackPos - (6 - 2)], $this->semStack[$stackPos - (6 - 1)]); }, 289 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; }, 290 => function ($stackPos) { - $this->semValue = new Node\Name('static', $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); + $this->semValue = new Node\NullableType($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); }, 291 => function ($stackPos) { - $this->semValue = $this->handleBuiltinTypes($this->semStack[$stackPos - (1 - 1)]); + $this->semValue = new Node\UnionType($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); }, 292 => function ($stackPos) { - $this->semValue = new Node\Identifier('array', $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); + $this->semValue = $this->semStack[$stackPos - (1 - 1)]; }, 293 => function ($stackPos) { - $this->semValue = new Node\Identifier('callable', $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 294 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; + }, 294 => function ($stackPos) { + $this->semValue = new Node\Name('static', $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); }, 295 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos - (3 - 2)]; + $this->semValue = $this->handleBuiltinTypes($this->semStack[$stackPos - (1 - 1)]); }, 296 => function ($stackPos) { - $this->semValue = array($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)]); + $this->semValue = new Node\Identifier('array', $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); }, 297 => function ($stackPos) { - $this->semStack[$stackPos - (3 - 1)][] = $this->semStack[$stackPos - (3 - 3)]; - $this->semValue = $this->semStack[$stackPos - (3 - 1)]; + $this->semValue = new Node\Identifier('callable', $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); }, 298 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; }, 299 => function ($stackPos) { @@ -17828,67 +17993,67 @@ class Php7 extends \PHPUnit\PhpParser\ParserAbstract $this->semStack[$stackPos - (3 - 1)][] = $this->semStack[$stackPos - (3 - 3)]; $this->semValue = $this->semStack[$stackPos - (3 - 1)]; }, 302 => function ($stackPos) { - $this->semValue = array($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)]); + $this->semValue = $this->semStack[$stackPos - (1 - 1)]; }, 303 => function ($stackPos) { - $this->semStack[$stackPos - (3 - 1)][] = $this->semStack[$stackPos - (3 - 3)]; - $this->semValue = $this->semStack[$stackPos - (3 - 1)]; + $this->semValue = $this->semStack[$stackPos - (3 - 2)]; }, 304 => function ($stackPos) { - $this->semValue = new Node\IntersectionType($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 305 => function ($stackPos) { $this->semValue = array($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)]); - }, 306 => function ($stackPos) { + }, 305 => function ($stackPos) { $this->semStack[$stackPos - (3 - 1)][] = $this->semStack[$stackPos - (3 - 3)]; $this->semValue = $this->semStack[$stackPos - (3 - 1)]; + }, 306 => function ($stackPos) { + $this->semValue = array($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)]); }, 307 => function ($stackPos) { - $this->semValue = new Node\IntersectionType($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); + $this->semStack[$stackPos - (3 - 1)][] = $this->semStack[$stackPos - (3 - 3)]; + $this->semValue = $this->semStack[$stackPos - (3 - 1)]; }, 308 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos - (1 - 1)]; + $this->semValue = new Node\IntersectionType($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); }, 309 => function ($stackPos) { - $this->semValue = new Node\NullableType($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); + $this->semValue = array($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)]); }, 310 => function ($stackPos) { - $this->semValue = new Node\UnionType($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); + $this->semStack[$stackPos - (3 - 1)][] = $this->semStack[$stackPos - (3 - 3)]; + $this->semValue = $this->semStack[$stackPos - (3 - 1)]; }, 311 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos - (1 - 1)]; + $this->semValue = new Node\IntersectionType($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); }, 312 => function ($stackPos) { - $this->semValue = null; - }, 313 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; + }, 313 => function ($stackPos) { + $this->semValue = new Node\NullableType($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); }, 314 => function ($stackPos) { - $this->semValue = null; + $this->semValue = new Node\UnionType($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); }, 315 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos - (2 - 2)]; + $this->semValue = $this->semStack[$stackPos - (1 - 1)]; }, 316 => function ($stackPos) { $this->semValue = null; }, 317 => function ($stackPos) { - $this->semValue = array(); + $this->semValue = $this->semStack[$stackPos - (1 - 1)]; }, 318 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos - (4 - 2)]; + $this->semValue = null; }, 319 => function ($stackPos) { - $this->semValue = array($this->semStack[$stackPos - (3 - 2)]); + $this->semValue = $this->semStack[$stackPos - (2 - 2)]; }, 320 => function ($stackPos) { - $this->semValue = new Node\VariadicPlaceholder($this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); + $this->semValue = null; }, 321 => function ($stackPos) { - $this->semValue = array($this->semStack[$stackPos - (1 - 1)]); + $this->semValue = array(); }, 322 => function ($stackPos) { - $this->semStack[$stackPos - (3 - 1)][] = $this->semStack[$stackPos - (3 - 3)]; - $this->semValue = $this->semStack[$stackPos - (3 - 1)]; + $this->semValue = $this->semStack[$stackPos - (4 - 2)]; }, 323 => function ($stackPos) { - $this->semValue = new Node\Arg($this->semStack[$stackPos - (1 - 1)], \false, \false, $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); + $this->semValue = array($this->semStack[$stackPos - (3 - 2)]); }, 324 => function ($stackPos) { - $this->semValue = new Node\Arg($this->semStack[$stackPos - (2 - 2)], \true, \false, $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); + $this->semValue = new Node\VariadicPlaceholder($this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); }, 325 => function ($stackPos) { - $this->semValue = new Node\Arg($this->semStack[$stackPos - (2 - 2)], \false, \true, $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); + $this->semValue = array($this->semStack[$stackPos - (1 - 1)]); }, 326 => function ($stackPos) { - $this->semValue = new Node\Arg($this->semStack[$stackPos - (3 - 3)], \false, \false, $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes, $this->semStack[$stackPos - (3 - 1)]); - }, 327 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos - (2 - 1)]; - }, 328 => function ($stackPos) { $this->semStack[$stackPos - (3 - 1)][] = $this->semStack[$stackPos - (3 - 3)]; $this->semValue = $this->semStack[$stackPos - (3 - 1)]; + }, 327 => function ($stackPos) { + $this->semValue = new Node\Arg($this->semStack[$stackPos - (1 - 1)], \false, \false, $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); + }, 328 => function ($stackPos) { + $this->semValue = new Node\Arg($this->semStack[$stackPos - (2 - 2)], \true, \false, $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); }, 329 => function ($stackPos) { - $this->semValue = array($this->semStack[$stackPos - (1 - 1)]); + $this->semValue = new Node\Arg($this->semStack[$stackPos - (2 - 2)], \false, \true, $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); }, 330 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos - (1 - 1)]; + $this->semValue = new Node\Arg($this->semStack[$stackPos - (3 - 3)], \false, \false, $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes, $this->semStack[$stackPos - (3 - 1)]); }, 331 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (2 - 1)]; }, 332 => function ($stackPos) { @@ -17897,17 +18062,26 @@ class Php7 extends \PHPUnit\PhpParser\ParserAbstract }, 333 => function ($stackPos) { $this->semValue = array($this->semStack[$stackPos - (1 - 1)]); }, 334 => function ($stackPos) { - $this->semValue = new Stmt\StaticVar($this->semStack[$stackPos - (1 - 1)], null, $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); + $this->semValue = $this->semStack[$stackPos - (1 - 1)]; }, 335 => function ($stackPos) { - $this->semValue = new Stmt\StaticVar($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); + $this->semValue = $this->semStack[$stackPos - (2 - 1)]; }, 336 => function ($stackPos) { + $this->semStack[$stackPos - (3 - 1)][] = $this->semStack[$stackPos - (3 - 3)]; + $this->semValue = $this->semStack[$stackPos - (3 - 1)]; + }, 337 => function ($stackPos) { + $this->semValue = array($this->semStack[$stackPos - (1 - 1)]); + }, 338 => function ($stackPos) { + $this->semValue = new Stmt\StaticVar($this->semStack[$stackPos - (1 - 1)], null, $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); + }, 339 => function ($stackPos) { + $this->semValue = new Stmt\StaticVar($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); + }, 340 => function ($stackPos) { if ($this->semStack[$stackPos - (2 - 2)] !== null) { $this->semStack[$stackPos - (2 - 1)][] = $this->semStack[$stackPos - (2 - 2)]; $this->semValue = $this->semStack[$stackPos - (2 - 1)]; } - }, 337 => function ($stackPos) { + }, 341 => function ($stackPos) { $this->semValue = array(); - }, 338 => function ($stackPos) { + }, 342 => function ($stackPos) { $startAttributes = $this->lookaheadStartAttributes; if (isset($startAttributes['comments'])) { $nop = new Stmt\Nop($this->createCommentNopAttributes($startAttributes['comments'])); @@ -17918,401 +18092,410 @@ class Php7 extends \PHPUnit\PhpParser\ParserAbstract $this->semStack[$stackPos - (1 - 1)][] = $nop; } $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 339 => function ($stackPos) { + }, 343 => function ($stackPos) { $this->semValue = new Stmt\Property($this->semStack[$stackPos - (5 - 2)], $this->semStack[$stackPos - (5 - 4)], $this->startAttributeStack[$stackPos - (5 - 1)] + $this->endAttributes, $this->semStack[$stackPos - (5 - 3)], $this->semStack[$stackPos - (5 - 1)]); $this->checkProperty($this->semValue, $stackPos - (5 - 2)); - }, 340 => function ($stackPos) { + }, 344 => function ($stackPos) { $this->semValue = new Stmt\ClassConst($this->semStack[$stackPos - (5 - 4)], $this->semStack[$stackPos - (5 - 2)], $this->startAttributeStack[$stackPos - (5 - 1)] + $this->endAttributes, $this->semStack[$stackPos - (5 - 1)]); $this->checkClassConst($this->semValue, $stackPos - (5 - 2)); - }, 341 => function ($stackPos) { + }, 345 => function ($stackPos) { + $this->semValue = new Stmt\ClassConst($this->semStack[$stackPos - (6 - 5)], $this->semStack[$stackPos - (6 - 2)], $this->startAttributeStack[$stackPos - (6 - 1)] + $this->endAttributes, $this->semStack[$stackPos - (6 - 1)], $this->semStack[$stackPos - (6 - 4)]); + $this->checkClassConst($this->semValue, $stackPos - (6 - 2)); + }, 346 => function ($stackPos) { $this->semValue = new Stmt\ClassMethod($this->semStack[$stackPos - (10 - 5)], ['type' => $this->semStack[$stackPos - (10 - 2)], 'byRef' => $this->semStack[$stackPos - (10 - 4)], 'params' => $this->semStack[$stackPos - (10 - 7)], 'returnType' => $this->semStack[$stackPos - (10 - 9)], 'stmts' => $this->semStack[$stackPos - (10 - 10)], 'attrGroups' => $this->semStack[$stackPos - (10 - 1)]], $this->startAttributeStack[$stackPos - (10 - 1)] + $this->endAttributes); $this->checkClassMethod($this->semValue, $stackPos - (10 - 2)); - }, 342 => function ($stackPos) { + }, 347 => function ($stackPos) { $this->semValue = new Stmt\TraitUse($this->semStack[$stackPos - (3 - 2)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 343 => function ($stackPos) { + }, 348 => function ($stackPos) { $this->semValue = new Stmt\EnumCase($this->semStack[$stackPos - (5 - 3)], $this->semStack[$stackPos - (5 - 4)], $this->semStack[$stackPos - (5 - 1)], $this->startAttributeStack[$stackPos - (5 - 1)] + $this->endAttributes); - }, 344 => function ($stackPos) { + }, 349 => function ($stackPos) { $this->semValue = null; /* will be skipped */ - }, 345 => function ($stackPos) { + }, 350 => function ($stackPos) { $this->semValue = array(); - }, 346 => function ($stackPos) { + }, 351 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (3 - 2)]; - }, 347 => function ($stackPos) { + }, 352 => function ($stackPos) { $this->semValue = array(); - }, 348 => function ($stackPos) { + }, 353 => function ($stackPos) { $this->semStack[$stackPos - (2 - 1)][] = $this->semStack[$stackPos - (2 - 2)]; $this->semValue = $this->semStack[$stackPos - (2 - 1)]; - }, 349 => function ($stackPos) { + }, 354 => function ($stackPos) { $this->semValue = new Stmt\TraitUseAdaptation\Precedence($this->semStack[$stackPos - (4 - 1)][0], $this->semStack[$stackPos - (4 - 1)][1], $this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 350 => function ($stackPos) { + }, 355 => function ($stackPos) { $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos - (5 - 1)][0], $this->semStack[$stackPos - (5 - 1)][1], $this->semStack[$stackPos - (5 - 3)], $this->semStack[$stackPos - (5 - 4)], $this->startAttributeStack[$stackPos - (5 - 1)] + $this->endAttributes); - }, 351 => function ($stackPos) { + }, 356 => function ($stackPos) { $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos - (4 - 1)][0], $this->semStack[$stackPos - (4 - 1)][1], $this->semStack[$stackPos - (4 - 3)], null, $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 352 => function ($stackPos) { + }, 357 => function ($stackPos) { $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos - (4 - 1)][0], $this->semStack[$stackPos - (4 - 1)][1], null, $this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 353 => function ($stackPos) { + }, 358 => function ($stackPos) { $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos - (4 - 1)][0], $this->semStack[$stackPos - (4 - 1)][1], null, $this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 354 => function ($stackPos) { + }, 359 => function ($stackPos) { $this->semValue = array($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)]); - }, 355 => function ($stackPos) { + }, 360 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 356 => function ($stackPos) { + }, 361 => function ($stackPos) { $this->semValue = array(null, $this->semStack[$stackPos - (1 - 1)]); - }, 357 => function ($stackPos) { + }, 362 => function ($stackPos) { $this->semValue = null; - }, 358 => function ($stackPos) { + }, 363 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 359 => function ($stackPos) { + }, 364 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 360 => function ($stackPos) { + }, 365 => function ($stackPos) { $this->semValue = 0; - }, 361 => function ($stackPos) { + }, 366 => function ($stackPos) { $this->semValue = 0; - }, 362 => function ($stackPos) { + }, 367 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 363 => function ($stackPos) { + }, 368 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 364 => function ($stackPos) { + }, 369 => function ($stackPos) { $this->checkModifier($this->semStack[$stackPos - (2 - 1)], $this->semStack[$stackPos - (2 - 2)], $stackPos - (2 - 2)); $this->semValue = $this->semStack[$stackPos - (2 - 1)] | $this->semStack[$stackPos - (2 - 2)]; - }, 365 => function ($stackPos) { + }, 370 => function ($stackPos) { $this->semValue = Stmt\Class_::MODIFIER_PUBLIC; - }, 366 => function ($stackPos) { + }, 371 => function ($stackPos) { $this->semValue = Stmt\Class_::MODIFIER_PROTECTED; - }, 367 => function ($stackPos) { + }, 372 => function ($stackPos) { $this->semValue = Stmt\Class_::MODIFIER_PRIVATE; - }, 368 => function ($stackPos) { + }, 373 => function ($stackPos) { $this->semValue = Stmt\Class_::MODIFIER_STATIC; - }, 369 => function ($stackPos) { + }, 374 => function ($stackPos) { $this->semValue = Stmt\Class_::MODIFIER_ABSTRACT; - }, 370 => function ($stackPos) { + }, 375 => function ($stackPos) { $this->semValue = Stmt\Class_::MODIFIER_FINAL; - }, 371 => function ($stackPos) { + }, 376 => function ($stackPos) { $this->semValue = Stmt\Class_::MODIFIER_READONLY; - }, 372 => function ($stackPos) { + }, 377 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (2 - 1)]; - }, 373 => function ($stackPos) { + }, 378 => function ($stackPos) { $this->semValue = array($this->semStack[$stackPos - (1 - 1)]); - }, 374 => function ($stackPos) { + }, 379 => function ($stackPos) { $this->semStack[$stackPos - (3 - 1)][] = $this->semStack[$stackPos - (3 - 3)]; $this->semValue = $this->semStack[$stackPos - (3 - 1)]; - }, 375 => function ($stackPos) { + }, 380 => function ($stackPos) { $this->semValue = new Node\VarLikeIdentifier(\substr($this->semStack[$stackPos - (1 - 1)], 1), $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 376 => function ($stackPos) { + }, 381 => function ($stackPos) { $this->semValue = new Stmt\PropertyProperty($this->semStack[$stackPos - (1 - 1)], null, $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 377 => function ($stackPos) { + }, 382 => function ($stackPos) { $this->semValue = new Stmt\PropertyProperty($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 378 => function ($stackPos) { + }, 383 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (2 - 1)]; - }, 379 => function ($stackPos) { + }, 384 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (2 - 1)]; - }, 380 => function ($stackPos) { + }, 385 => function ($stackPos) { $this->semStack[$stackPos - (3 - 1)][] = $this->semStack[$stackPos - (3 - 3)]; $this->semValue = $this->semStack[$stackPos - (3 - 1)]; - }, 381 => function ($stackPos) { + }, 386 => function ($stackPos) { $this->semValue = array($this->semStack[$stackPos - (1 - 1)]); - }, 382 => function ($stackPos) { + }, 387 => function ($stackPos) { $this->semValue = array(); - }, 383 => function ($stackPos) { + }, 388 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 384 => function ($stackPos) { + }, 389 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 385 => function ($stackPos) { + }, 390 => function ($stackPos) { $this->semValue = new Expr\Assign($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 386 => function ($stackPos) { + }, 391 => function ($stackPos) { $this->semValue = new Expr\Assign($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 387 => function ($stackPos) { + }, 392 => function ($stackPos) { $this->semValue = new Expr\Assign($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 388 => function ($stackPos) { + }, 393 => function ($stackPos) { $this->semValue = new Expr\AssignRef($this->semStack[$stackPos - (4 - 1)], $this->semStack[$stackPos - (4 - 4)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 389 => function ($stackPos) { + }, 394 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 390 => function ($stackPos) { + }, 395 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 391 => function ($stackPos) { + }, 396 => function ($stackPos) { $this->semValue = new Expr\Clone_($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 392 => function ($stackPos) { + }, 397 => function ($stackPos) { $this->semValue = new Expr\AssignOp\Plus($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 393 => function ($stackPos) { + }, 398 => function ($stackPos) { $this->semValue = new Expr\AssignOp\Minus($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 394 => function ($stackPos) { + }, 399 => function ($stackPos) { $this->semValue = new Expr\AssignOp\Mul($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 395 => function ($stackPos) { + }, 400 => function ($stackPos) { $this->semValue = new Expr\AssignOp\Div($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 396 => function ($stackPos) { + }, 401 => function ($stackPos) { $this->semValue = new Expr\AssignOp\Concat($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 397 => function ($stackPos) { + }, 402 => function ($stackPos) { $this->semValue = new Expr\AssignOp\Mod($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 398 => function ($stackPos) { + }, 403 => function ($stackPos) { $this->semValue = new Expr\AssignOp\BitwiseAnd($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 399 => function ($stackPos) { + }, 404 => function ($stackPos) { $this->semValue = new Expr\AssignOp\BitwiseOr($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 400 => function ($stackPos) { + }, 405 => function ($stackPos) { $this->semValue = new Expr\AssignOp\BitwiseXor($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 401 => function ($stackPos) { + }, 406 => function ($stackPos) { $this->semValue = new Expr\AssignOp\ShiftLeft($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 402 => function ($stackPos) { + }, 407 => function ($stackPos) { $this->semValue = new Expr\AssignOp\ShiftRight($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 403 => function ($stackPos) { + }, 408 => function ($stackPos) { $this->semValue = new Expr\AssignOp\Pow($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 404 => function ($stackPos) { + }, 409 => function ($stackPos) { $this->semValue = new Expr\AssignOp\Coalesce($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 405 => function ($stackPos) { + }, 410 => function ($stackPos) { $this->semValue = new Expr\PostInc($this->semStack[$stackPos - (2 - 1)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 406 => function ($stackPos) { + }, 411 => function ($stackPos) { $this->semValue = new Expr\PreInc($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 407 => function ($stackPos) { + }, 412 => function ($stackPos) { $this->semValue = new Expr\PostDec($this->semStack[$stackPos - (2 - 1)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 408 => function ($stackPos) { + }, 413 => function ($stackPos) { $this->semValue = new Expr\PreDec($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 409 => function ($stackPos) { + }, 414 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\BooleanOr($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 410 => function ($stackPos) { + }, 415 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\BooleanAnd($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 411 => function ($stackPos) { + }, 416 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\LogicalOr($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 412 => function ($stackPos) { + }, 417 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\LogicalAnd($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 413 => function ($stackPos) { + }, 418 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\LogicalXor($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 414 => function ($stackPos) { + }, 419 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\BitwiseOr($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 415 => function ($stackPos) { + }, 420 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\BitwiseAnd($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 416 => function ($stackPos) { + }, 421 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\BitwiseAnd($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 417 => function ($stackPos) { + }, 422 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\BitwiseXor($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 418 => function ($stackPos) { + }, 423 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\Concat($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 419 => function ($stackPos) { + }, 424 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\Plus($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 420 => function ($stackPos) { + }, 425 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\Minus($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 421 => function ($stackPos) { + }, 426 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\Mul($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 422 => function ($stackPos) { + }, 427 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\Div($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 423 => function ($stackPos) { + }, 428 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\Mod($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 424 => function ($stackPos) { + }, 429 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\ShiftLeft($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 425 => function ($stackPos) { + }, 430 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\ShiftRight($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 426 => function ($stackPos) { + }, 431 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\Pow($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 427 => function ($stackPos) { + }, 432 => function ($stackPos) { $this->semValue = new Expr\UnaryPlus($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 428 => function ($stackPos) { + }, 433 => function ($stackPos) { $this->semValue = new Expr\UnaryMinus($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 429 => function ($stackPos) { + }, 434 => function ($stackPos) { $this->semValue = new Expr\BooleanNot($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 430 => function ($stackPos) { + }, 435 => function ($stackPos) { $this->semValue = new Expr\BitwiseNot($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 431 => function ($stackPos) { + }, 436 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\Identical($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 432 => function ($stackPos) { + }, 437 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\NotIdentical($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 433 => function ($stackPos) { + }, 438 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\Equal($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 434 => function ($stackPos) { + }, 439 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\NotEqual($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 435 => function ($stackPos) { + }, 440 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\Spaceship($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 436 => function ($stackPos) { + }, 441 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\Smaller($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 437 => function ($stackPos) { + }, 442 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\SmallerOrEqual($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 438 => function ($stackPos) { + }, 443 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\Greater($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 439 => function ($stackPos) { + }, 444 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\GreaterOrEqual($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 440 => function ($stackPos) { + }, 445 => function ($stackPos) { $this->semValue = new Expr\Instanceof_($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 441 => function ($stackPos) { + }, 446 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (3 - 2)]; - }, 442 => function ($stackPos) { + }, 447 => function ($stackPos) { $this->semValue = new Expr\Ternary($this->semStack[$stackPos - (5 - 1)], $this->semStack[$stackPos - (5 - 3)], $this->semStack[$stackPos - (5 - 5)], $this->startAttributeStack[$stackPos - (5 - 1)] + $this->endAttributes); - }, 443 => function ($stackPos) { + }, 448 => function ($stackPos) { $this->semValue = new Expr\Ternary($this->semStack[$stackPos - (4 - 1)], null, $this->semStack[$stackPos - (4 - 4)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 444 => function ($stackPos) { + }, 449 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\Coalesce($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 445 => function ($stackPos) { + }, 450 => function ($stackPos) { $this->semValue = new Expr\Isset_($this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 446 => function ($stackPos) { + }, 451 => function ($stackPos) { $this->semValue = new Expr\Empty_($this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 447 => function ($stackPos) { + }, 452 => function ($stackPos) { $this->semValue = new Expr\Include_($this->semStack[$stackPos - (2 - 2)], Expr\Include_::TYPE_INCLUDE, $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 448 => function ($stackPos) { + }, 453 => function ($stackPos) { $this->semValue = new Expr\Include_($this->semStack[$stackPos - (2 - 2)], Expr\Include_::TYPE_INCLUDE_ONCE, $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 449 => function ($stackPos) { + }, 454 => function ($stackPos) { $this->semValue = new Expr\Eval_($this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 450 => function ($stackPos) { + }, 455 => function ($stackPos) { $this->semValue = new Expr\Include_($this->semStack[$stackPos - (2 - 2)], Expr\Include_::TYPE_REQUIRE, $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 451 => function ($stackPos) { + }, 456 => function ($stackPos) { $this->semValue = new Expr\Include_($this->semStack[$stackPos - (2 - 2)], Expr\Include_::TYPE_REQUIRE_ONCE, $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 452 => function ($stackPos) { + }, 457 => function ($stackPos) { $this->semValue = new Expr\Cast\Int_($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 453 => function ($stackPos) { + }, 458 => function ($stackPos) { $attrs = $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes; $attrs['kind'] = $this->getFloatCastKind($this->semStack[$stackPos - (2 - 1)]); $this->semValue = new Expr\Cast\Double($this->semStack[$stackPos - (2 - 2)], $attrs); - }, 454 => function ($stackPos) { + }, 459 => function ($stackPos) { $this->semValue = new Expr\Cast\String_($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 455 => function ($stackPos) { + }, 460 => function ($stackPos) { $this->semValue = new Expr\Cast\Array_($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 456 => function ($stackPos) { + }, 461 => function ($stackPos) { $this->semValue = new Expr\Cast\Object_($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 457 => function ($stackPos) { + }, 462 => function ($stackPos) { $this->semValue = new Expr\Cast\Bool_($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 458 => function ($stackPos) { + }, 463 => function ($stackPos) { $this->semValue = new Expr\Cast\Unset_($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 459 => function ($stackPos) { + }, 464 => function ($stackPos) { $attrs = $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes; $attrs['kind'] = \strtolower($this->semStack[$stackPos - (2 - 1)]) === 'exit' ? Expr\Exit_::KIND_EXIT : Expr\Exit_::KIND_DIE; $this->semValue = new Expr\Exit_($this->semStack[$stackPos - (2 - 2)], $attrs); - }, 460 => function ($stackPos) { + }, 465 => function ($stackPos) { $this->semValue = new Expr\ErrorSuppress($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 461 => function ($stackPos) { + }, 466 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 462 => function ($stackPos) { + }, 467 => function ($stackPos) { $this->semValue = new Expr\ShellExec($this->semStack[$stackPos - (3 - 2)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 463 => function ($stackPos) { + }, 468 => function ($stackPos) { $this->semValue = new Expr\Print_($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 464 => function ($stackPos) { + }, 469 => function ($stackPos) { $this->semValue = new Expr\Yield_(null, null, $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 465 => function ($stackPos) { + }, 470 => function ($stackPos) { $this->semValue = new Expr\Yield_($this->semStack[$stackPos - (2 - 2)], null, $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 466 => function ($stackPos) { + }, 471 => function ($stackPos) { $this->semValue = new Expr\Yield_($this->semStack[$stackPos - (4 - 4)], $this->semStack[$stackPos - (4 - 2)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 467 => function ($stackPos) { + }, 472 => function ($stackPos) { $this->semValue = new Expr\YieldFrom($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 468 => function ($stackPos) { + }, 473 => function ($stackPos) { $this->semValue = new Expr\Throw_($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 469 => function ($stackPos) { + }, 474 => function ($stackPos) { $this->semValue = new Expr\ArrowFunction(['static' => \false, 'byRef' => $this->semStack[$stackPos - (8 - 2)], 'params' => $this->semStack[$stackPos - (8 - 4)], 'returnType' => $this->semStack[$stackPos - (8 - 6)], 'expr' => $this->semStack[$stackPos - (8 - 8)], 'attrGroups' => []], $this->startAttributeStack[$stackPos - (8 - 1)] + $this->endAttributes); - }, 470 => function ($stackPos) { + }, 475 => function ($stackPos) { $this->semValue = new Expr\ArrowFunction(['static' => \true, 'byRef' => $this->semStack[$stackPos - (9 - 3)], 'params' => $this->semStack[$stackPos - (9 - 5)], 'returnType' => $this->semStack[$stackPos - (9 - 7)], 'expr' => $this->semStack[$stackPos - (9 - 9)], 'attrGroups' => []], $this->startAttributeStack[$stackPos - (9 - 1)] + $this->endAttributes); - }, 471 => function ($stackPos) { + }, 476 => function ($stackPos) { $this->semValue = new Expr\Closure(['static' => \false, 'byRef' => $this->semStack[$stackPos - (8 - 2)], 'params' => $this->semStack[$stackPos - (8 - 4)], 'uses' => $this->semStack[$stackPos - (8 - 6)], 'returnType' => $this->semStack[$stackPos - (8 - 7)], 'stmts' => $this->semStack[$stackPos - (8 - 8)], 'attrGroups' => []], $this->startAttributeStack[$stackPos - (8 - 1)] + $this->endAttributes); - }, 472 => function ($stackPos) { + }, 477 => function ($stackPos) { $this->semValue = new Expr\Closure(['static' => \true, 'byRef' => $this->semStack[$stackPos - (9 - 3)], 'params' => $this->semStack[$stackPos - (9 - 5)], 'uses' => $this->semStack[$stackPos - (9 - 7)], 'returnType' => $this->semStack[$stackPos - (9 - 8)], 'stmts' => $this->semStack[$stackPos - (9 - 9)], 'attrGroups' => []], $this->startAttributeStack[$stackPos - (9 - 1)] + $this->endAttributes); - }, 473 => function ($stackPos) { + }, 478 => function ($stackPos) { $this->semValue = new Expr\ArrowFunction(['static' => \false, 'byRef' => $this->semStack[$stackPos - (9 - 3)], 'params' => $this->semStack[$stackPos - (9 - 5)], 'returnType' => $this->semStack[$stackPos - (9 - 7)], 'expr' => $this->semStack[$stackPos - (9 - 9)], 'attrGroups' => $this->semStack[$stackPos - (9 - 1)]], $this->startAttributeStack[$stackPos - (9 - 1)] + $this->endAttributes); - }, 474 => function ($stackPos) { + }, 479 => function ($stackPos) { $this->semValue = new Expr\ArrowFunction(['static' => \true, 'byRef' => $this->semStack[$stackPos - (10 - 4)], 'params' => $this->semStack[$stackPos - (10 - 6)], 'returnType' => $this->semStack[$stackPos - (10 - 8)], 'expr' => $this->semStack[$stackPos - (10 - 10)], 'attrGroups' => $this->semStack[$stackPos - (10 - 1)]], $this->startAttributeStack[$stackPos - (10 - 1)] + $this->endAttributes); - }, 475 => function ($stackPos) { + }, 480 => function ($stackPos) { $this->semValue = new Expr\Closure(['static' => \false, 'byRef' => $this->semStack[$stackPos - (9 - 3)], 'params' => $this->semStack[$stackPos - (9 - 5)], 'uses' => $this->semStack[$stackPos - (9 - 7)], 'returnType' => $this->semStack[$stackPos - (9 - 8)], 'stmts' => $this->semStack[$stackPos - (9 - 9)], 'attrGroups' => $this->semStack[$stackPos - (9 - 1)]], $this->startAttributeStack[$stackPos - (9 - 1)] + $this->endAttributes); - }, 476 => function ($stackPos) { + }, 481 => function ($stackPos) { $this->semValue = new Expr\Closure(['static' => \true, 'byRef' => $this->semStack[$stackPos - (10 - 4)], 'params' => $this->semStack[$stackPos - (10 - 6)], 'uses' => $this->semStack[$stackPos - (10 - 8)], 'returnType' => $this->semStack[$stackPos - (10 - 9)], 'stmts' => $this->semStack[$stackPos - (10 - 10)], 'attrGroups' => $this->semStack[$stackPos - (10 - 1)]], $this->startAttributeStack[$stackPos - (10 - 1)] + $this->endAttributes); - }, 477 => function ($stackPos) { - $this->semValue = array(new Stmt\Class_(null, ['type' => 0, 'extends' => $this->semStack[$stackPos - (8 - 4)], 'implements' => $this->semStack[$stackPos - (8 - 5)], 'stmts' => $this->semStack[$stackPos - (8 - 7)], 'attrGroups' => $this->semStack[$stackPos - (8 - 1)]], $this->startAttributeStack[$stackPos - (8 - 1)] + $this->endAttributes), $this->semStack[$stackPos - (8 - 3)]); + }, 482 => function ($stackPos) { + $this->semValue = array(new Stmt\Class_(null, ['type' => $this->semStack[$stackPos - (8 - 2)], 'extends' => $this->semStack[$stackPos - (8 - 4)], 'implements' => $this->semStack[$stackPos - (8 - 5)], 'stmts' => $this->semStack[$stackPos - (8 - 7)], 'attrGroups' => $this->semStack[$stackPos - (8 - 1)]], $this->startAttributeStack[$stackPos - (8 - 1)] + $this->endAttributes), $this->semStack[$stackPos - (8 - 3)]); $this->checkClass($this->semValue[0], -1); - }, 478 => function ($stackPos) { + }, 483 => function ($stackPos) { $this->semValue = new Expr\New_($this->semStack[$stackPos - (3 - 2)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 479 => function ($stackPos) { + }, 484 => function ($stackPos) { list($class, $ctorArgs) = $this->semStack[$stackPos - (2 - 2)]; $this->semValue = new Expr\New_($class, $ctorArgs, $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 480 => function ($stackPos) { + }, 485 => function ($stackPos) { $this->semValue = array(); - }, 481 => function ($stackPos) { + }, 486 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (4 - 3)]; - }, 482 => function ($stackPos) { + }, 487 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (2 - 1)]; - }, 483 => function ($stackPos) { + }, 488 => function ($stackPos) { $this->semValue = array($this->semStack[$stackPos - (1 - 1)]); - }, 484 => function ($stackPos) { + }, 489 => function ($stackPos) { $this->semStack[$stackPos - (3 - 1)][] = $this->semStack[$stackPos - (3 - 3)]; $this->semValue = $this->semStack[$stackPos - (3 - 1)]; - }, 485 => function ($stackPos) { + }, 490 => function ($stackPos) { $this->semValue = new Expr\ClosureUse($this->semStack[$stackPos - (2 - 2)], $this->semStack[$stackPos - (2 - 1)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 486 => function ($stackPos) { + }, 491 => function ($stackPos) { + $this->semValue = new Name($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); + }, 492 => function ($stackPos) { $this->semValue = new Expr\FuncCall($this->semStack[$stackPos - (2 - 1)], $this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 487 => function ($stackPos) { + }, 493 => function ($stackPos) { $this->semValue = new Expr\FuncCall($this->semStack[$stackPos - (2 - 1)], $this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 488 => function ($stackPos) { + }, 494 => function ($stackPos) { + $this->semValue = new Expr\FuncCall($this->semStack[$stackPos - (2 - 1)], $this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); + }, 495 => function ($stackPos) { $this->semValue = new Expr\StaticCall($this->semStack[$stackPos - (4 - 1)], $this->semStack[$stackPos - (4 - 3)], $this->semStack[$stackPos - (4 - 4)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 489 => function ($stackPos) { + }, 496 => function ($stackPos) { $this->semValue = new Name($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 490 => function ($stackPos) { + }, 497 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 491 => function ($stackPos) { + }, 498 => function ($stackPos) { $this->semValue = new Name($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 492 => function ($stackPos) { + }, 499 => function ($stackPos) { $this->semValue = new Name($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 493 => function ($stackPos) { + }, 500 => function ($stackPos) { $this->semValue = new Name\FullyQualified(\substr($this->semStack[$stackPos - (1 - 1)], 1), $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 494 => function ($stackPos) { + }, 501 => function ($stackPos) { $this->semValue = new Name\Relative(\substr($this->semStack[$stackPos - (1 - 1)], 10), $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 495 => function ($stackPos) { + }, 502 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 496 => function ($stackPos) { + }, 503 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 497 => function ($stackPos) { + }, 504 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (3 - 2)]; - }, 498 => function ($stackPos) { + }, 505 => function ($stackPos) { $this->semValue = new Expr\Error($this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); $this->errorState = 2; - }, 499 => function ($stackPos) { + }, 506 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 500 => function ($stackPos) { + }, 507 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 501 => function ($stackPos) { + }, 508 => function ($stackPos) { $this->semValue = null; - }, 502 => function ($stackPos) { + }, 509 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (3 - 2)]; - }, 503 => function ($stackPos) { + }, 510 => function ($stackPos) { $this->semValue = array(); - }, 504 => function ($stackPos) { + }, 511 => function ($stackPos) { $this->semValue = array(new Scalar\EncapsedStringPart(Scalar\String_::parseEscapeSequences($this->semStack[$stackPos - (1 - 1)], '`'), $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes)); - }, 505 => function ($stackPos) { + }, 512 => function ($stackPos) { foreach ($this->semStack[$stackPos - (1 - 1)] as $s) { if ($s instanceof Node\Scalar\EncapsedStringPart) { $s->value = Node\Scalar\String_::parseEscapeSequences($s->value, '`', \true); } } $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 506 => function ($stackPos) { + }, 513 => function ($stackPos) { $this->semValue = array(); - }, 507 => function ($stackPos) { + }, 514 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 508 => function ($stackPos) { + }, 515 => function ($stackPos) { $this->semValue = new Expr\ConstFetch($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 509 => function ($stackPos) { + }, 516 => function ($stackPos) { $this->semValue = new Scalar\MagicConst\Line($this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 510 => function ($stackPos) { + }, 517 => function ($stackPos) { $this->semValue = new Scalar\MagicConst\File($this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 511 => function ($stackPos) { + }, 518 => function ($stackPos) { $this->semValue = new Scalar\MagicConst\Dir($this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 512 => function ($stackPos) { + }, 519 => function ($stackPos) { $this->semValue = new Scalar\MagicConst\Class_($this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 513 => function ($stackPos) { + }, 520 => function ($stackPos) { $this->semValue = new Scalar\MagicConst\Trait_($this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 514 => function ($stackPos) { + }, 521 => function ($stackPos) { $this->semValue = new Scalar\MagicConst\Method($this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 515 => function ($stackPos) { + }, 522 => function ($stackPos) { $this->semValue = new Scalar\MagicConst\Function_($this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 516 => function ($stackPos) { + }, 523 => function ($stackPos) { $this->semValue = new Scalar\MagicConst\Namespace_($this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 517 => function ($stackPos) { + }, 524 => function ($stackPos) { $this->semValue = new Expr\ClassConstFetch($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 518 => function ($stackPos) { + }, 525 => function ($stackPos) { + $this->semValue = new Expr\ClassConstFetch($this->semStack[$stackPos - (5 - 1)], $this->semStack[$stackPos - (5 - 4)], $this->startAttributeStack[$stackPos - (5 - 1)] + $this->endAttributes); + }, 526 => function ($stackPos) { $this->semValue = new Expr\ClassConstFetch($this->semStack[$stackPos - (3 - 1)], new Expr\Error($this->startAttributeStack[$stackPos - (3 - 3)] + $this->endAttributeStack[$stackPos - (3 - 3)]), $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); $this->errorState = 2; - }, 519 => function ($stackPos) { + }, 527 => function ($stackPos) { $attrs = $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes; $attrs['kind'] = Expr\Array_::KIND_SHORT; $this->semValue = new Expr\Array_($this->semStack[$stackPos - (3 - 2)], $attrs); - }, 520 => function ($stackPos) { + }, 528 => function ($stackPos) { $attrs = $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes; $attrs['kind'] = Expr\Array_::KIND_LONG; $this->semValue = new Expr\Array_($this->semStack[$stackPos - (4 - 3)], $attrs); - }, 521 => function ($stackPos) { + }, 529 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 522 => function ($stackPos) { + }, 530 => function ($stackPos) { $this->semValue = Scalar\String_::fromString($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 523 => function ($stackPos) { + }, 531 => function ($stackPos) { $attrs = $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes; $attrs['kind'] = Scalar\String_::KIND_DOUBLE_QUOTED; foreach ($this->semStack[$stackPos - (3 - 2)] as $s) { @@ -18321,181 +18504,181 @@ class Php7 extends \PHPUnit\PhpParser\ParserAbstract } } $this->semValue = new Scalar\Encapsed($this->semStack[$stackPos - (3 - 2)], $attrs); - }, 524 => function ($stackPos) { + }, 532 => function ($stackPos) { $this->semValue = $this->parseLNumber($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 525 => function ($stackPos) { + }, 533 => function ($stackPos) { $this->semValue = Scalar\DNumber::fromString($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 526 => function ($stackPos) { + }, 534 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 527 => function ($stackPos) { + }, 535 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 528 => function ($stackPos) { + }, 536 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 529 => function ($stackPos) { + }, 537 => function ($stackPos) { $this->semValue = $this->parseDocString($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 2)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes, $this->startAttributeStack[$stackPos - (3 - 3)] + $this->endAttributeStack[$stackPos - (3 - 3)], \true); - }, 530 => function ($stackPos) { + }, 538 => function ($stackPos) { $this->semValue = $this->parseDocString($this->semStack[$stackPos - (2 - 1)], '', $this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes, $this->startAttributeStack[$stackPos - (2 - 2)] + $this->endAttributeStack[$stackPos - (2 - 2)], \true); - }, 531 => function ($stackPos) { + }, 539 => function ($stackPos) { $this->semValue = $this->parseDocString($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 2)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes, $this->startAttributeStack[$stackPos - (3 - 3)] + $this->endAttributeStack[$stackPos - (3 - 3)], \true); - }, 532 => function ($stackPos) { + }, 540 => function ($stackPos) { $this->semValue = null; - }, 533 => function ($stackPos) { + }, 541 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 534 => function ($stackPos) { + }, 542 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 535 => function ($stackPos) { + }, 543 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (3 - 2)]; - }, 536 => function ($stackPos) { + }, 544 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 537 => function ($stackPos) { + }, 545 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 538 => function ($stackPos) { + }, 546 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 539 => function ($stackPos) { + }, 547 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 540 => function ($stackPos) { + }, 548 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 541 => function ($stackPos) { + }, 549 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (3 - 2)]; - }, 542 => function ($stackPos) { + }, 550 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 543 => function ($stackPos) { + }, 551 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 544 => function ($stackPos) { + }, 552 => function ($stackPos) { $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos - (4 - 1)], $this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 545 => function ($stackPos) { + }, 553 => function ($stackPos) { $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos - (4 - 1)], $this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 546 => function ($stackPos) { + }, 554 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 547 => function ($stackPos) { + }, 555 => function ($stackPos) { $this->semValue = new Expr\MethodCall($this->semStack[$stackPos - (4 - 1)], $this->semStack[$stackPos - (4 - 3)], $this->semStack[$stackPos - (4 - 4)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 548 => function ($stackPos) { + }, 556 => function ($stackPos) { $this->semValue = new Expr\NullsafeMethodCall($this->semStack[$stackPos - (4 - 1)], $this->semStack[$stackPos - (4 - 3)], $this->semStack[$stackPos - (4 - 4)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 549 => function ($stackPos) { + }, 557 => function ($stackPos) { $this->semValue = null; - }, 550 => function ($stackPos) { + }, 558 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 551 => function ($stackPos) { + }, 559 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 552 => function ($stackPos) { + }, 560 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 553 => function ($stackPos) { + }, 561 => function ($stackPos) { $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 554 => function ($stackPos) { + }, 562 => function ($stackPos) { $this->semValue = new Expr\NullsafePropertyFetch($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 555 => function ($stackPos) { + }, 563 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 556 => function ($stackPos) { + }, 564 => function ($stackPos) { $this->semValue = new Expr\Variable($this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 557 => function ($stackPos) { + }, 565 => function ($stackPos) { $this->semValue = new Expr\Variable($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 558 => function ($stackPos) { + }, 566 => function ($stackPos) { $this->semValue = new Expr\Variable(new Expr\Error($this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes), $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); $this->errorState = 2; - }, 559 => function ($stackPos) { + }, 567 => function ($stackPos) { $var = $this->semStack[$stackPos - (1 - 1)]->name; $this->semValue = \is_string($var) ? new Node\VarLikeIdentifier($var, $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes) : $var; - }, 560 => function ($stackPos) { + }, 568 => function ($stackPos) { $this->semValue = new Expr\StaticPropertyFetch($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 561 => function ($stackPos) { + }, 569 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 562 => function ($stackPos) { + }, 570 => function ($stackPos) { $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos - (4 - 1)], $this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 563 => function ($stackPos) { + }, 571 => function ($stackPos) { $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos - (4 - 1)], $this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 564 => function ($stackPos) { + }, 572 => function ($stackPos) { $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 565 => function ($stackPos) { + }, 573 => function ($stackPos) { $this->semValue = new Expr\NullsafePropertyFetch($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 566 => function ($stackPos) { + }, 574 => function ($stackPos) { $this->semValue = new Expr\StaticPropertyFetch($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 567 => function ($stackPos) { + }, 575 => function ($stackPos) { $this->semValue = new Expr\StaticPropertyFetch($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 568 => function ($stackPos) { + }, 576 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 569 => function ($stackPos) { + }, 577 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (3 - 2)]; - }, 570 => function ($stackPos) { + }, 578 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 571 => function ($stackPos) { + }, 579 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 572 => function ($stackPos) { + }, 580 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (3 - 2)]; - }, 573 => function ($stackPos) { + }, 581 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 574 => function ($stackPos) { + }, 582 => function ($stackPos) { $this->semValue = new Expr\Error($this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); $this->errorState = 2; - }, 575 => function ($stackPos) { + }, 583 => function ($stackPos) { $this->semValue = new Expr\List_($this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 576 => function ($stackPos) { + }, 584 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; $end = \count($this->semValue) - 1; if ($this->semValue[$end] === null) { \array_pop($this->semValue); } - }, 577 => function ($stackPos) { + }, 585 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos]; - }, 578 => function ($stackPos) { + }, 586 => function ($stackPos) { /* do nothing -- prevent default action of $$=$this->semStack[$1]. See $551. */ - }, 579 => function ($stackPos) { + }, 587 => function ($stackPos) { $this->semStack[$stackPos - (3 - 1)][] = $this->semStack[$stackPos - (3 - 3)]; $this->semValue = $this->semStack[$stackPos - (3 - 1)]; - }, 580 => function ($stackPos) { + }, 588 => function ($stackPos) { $this->semValue = array($this->semStack[$stackPos - (1 - 1)]); - }, 581 => function ($stackPos) { + }, 589 => function ($stackPos) { $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos - (1 - 1)], null, \false, $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 582 => function ($stackPos) { + }, 590 => function ($stackPos) { $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos - (2 - 2)], null, \true, $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 583 => function ($stackPos) { + }, 591 => function ($stackPos) { $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos - (1 - 1)], null, \false, $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 584 => function ($stackPos) { + }, 592 => function ($stackPos) { $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos - (3 - 3)], $this->semStack[$stackPos - (3 - 1)], \false, $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 585 => function ($stackPos) { + }, 593 => function ($stackPos) { $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos - (4 - 4)], $this->semStack[$stackPos - (4 - 1)], \true, $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 586 => function ($stackPos) { + }, 594 => function ($stackPos) { $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos - (3 - 3)], $this->semStack[$stackPos - (3 - 1)], \false, $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 587 => function ($stackPos) { - $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos - (2 - 2)], null, \false, $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes, \true, $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 588 => function ($stackPos) { + }, 595 => function ($stackPos) { + $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos - (2 - 2)], null, \false, $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes, \true); + }, 596 => function ($stackPos) { $this->semValue = null; - }, 589 => function ($stackPos) { + }, 597 => function ($stackPos) { $this->semStack[$stackPos - (2 - 1)][] = $this->semStack[$stackPos - (2 - 2)]; $this->semValue = $this->semStack[$stackPos - (2 - 1)]; - }, 590 => function ($stackPos) { + }, 598 => function ($stackPos) { $this->semStack[$stackPos - (2 - 1)][] = $this->semStack[$stackPos - (2 - 2)]; $this->semValue = $this->semStack[$stackPos - (2 - 1)]; - }, 591 => function ($stackPos) { + }, 599 => function ($stackPos) { $this->semValue = array($this->semStack[$stackPos - (1 - 1)]); - }, 592 => function ($stackPos) { + }, 600 => function ($stackPos) { $this->semValue = array($this->semStack[$stackPos - (2 - 1)], $this->semStack[$stackPos - (2 - 2)]); - }, 593 => function ($stackPos) { + }, 601 => function ($stackPos) { $this->semValue = new Scalar\EncapsedStringPart($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 594 => function ($stackPos) { + }, 602 => function ($stackPos) { $this->semValue = new Expr\Variable($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 595 => function ($stackPos) { + }, 603 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 596 => function ($stackPos) { + }, 604 => function ($stackPos) { $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos - (4 - 1)], $this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 597 => function ($stackPos) { + }, 605 => function ($stackPos) { $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 598 => function ($stackPos) { + }, 606 => function ($stackPos) { $this->semValue = new Expr\NullsafePropertyFetch($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 599 => function ($stackPos) { + }, 607 => function ($stackPos) { $this->semValue = new Expr\Variable($this->semStack[$stackPos - (3 - 2)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 600 => function ($stackPos) { + }, 608 => function ($stackPos) { $this->semValue = new Expr\Variable($this->semStack[$stackPos - (3 - 2)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 601 => function ($stackPos) { + }, 609 => function ($stackPos) { $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos - (6 - 2)], $this->semStack[$stackPos - (6 - 4)], $this->startAttributeStack[$stackPos - (6 - 1)] + $this->endAttributes); - }, 602 => function ($stackPos) { + }, 610 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (3 - 2)]; - }, 603 => function ($stackPos) { + }, 611 => function ($stackPos) { $this->semValue = new Scalar\String_($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 604 => function ($stackPos) { + }, 612 => function ($stackPos) { $this->semValue = $this->parseNumString($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 605 => function ($stackPos) { + }, 613 => function ($stackPos) { $this->semValue = $this->parseNumString('-' . $this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 606 => function ($stackPos) { + }, 614 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; }]; } @@ -18667,9 +18850,12 @@ use PHPUnit\PhpParser\Node\Scalar\String_; use PHPUnit\PhpParser\Node\Stmt\Class_; use PHPUnit\PhpParser\Node\Stmt\ClassConst; use PHPUnit\PhpParser\Node\Stmt\ClassMethod; +use PHPUnit\PhpParser\Node\Stmt\Else_; +use PHPUnit\PhpParser\Node\Stmt\ElseIf_; use PHPUnit\PhpParser\Node\Stmt\Enum_; use PHPUnit\PhpParser\Node\Stmt\Interface_; use PHPUnit\PhpParser\Node\Stmt\Namespace_; +use PHPUnit\PhpParser\Node\Stmt\Nop; use PHPUnit\PhpParser\Node\Stmt\Property; use PHPUnit\PhpParser\Node\Stmt\TryCatch; use PHPUnit\PhpParser\Node\Stmt\UseUse; @@ -19369,6 +19555,24 @@ abstract class ParserAbstract implements Parser } return $attributes; } + /** @param ElseIf_|Else_ $node */ + protected function fixupAlternativeElse($node) + { + // Make sure a trailing nop statement carrying comments is part of the node. + $numStmts = \count($node->stmts); + if ($numStmts !== 0 && $node->stmts[$numStmts - 1] instanceof Nop) { + $nopAttrs = $node->stmts[$numStmts - 1]->getAttributes(); + if (isset($nopAttrs['endLine'])) { + $node->setAttribute('endLine', $nopAttrs['endLine']); + } + if (isset($nopAttrs['endFilePos'])) { + $node->setAttribute('endFilePos', $nopAttrs['endFilePos']); + } + if (isset($nopAttrs['endTokenPos'])) { + $node->setAttribute('endTokenPos', $nopAttrs['endTokenPos']); + } + } + } protected function checkClassModifier($a, $b, $modifierPos) { try { @@ -20023,7 +20227,7 @@ class Standard extends PrettyPrinterAbstract } protected function pExpr_StaticCall(Expr\StaticCall $node) { - return $this->pDereferenceLhs($node->class) . '::' . ($node->name instanceof Expr ? $node->name instanceof Expr\Variable ? $this->p($node->name) : '{' . $this->p($node->name) . '}' : $node->name) . '(' . $this->pMaybeMultiline($node->args) . ')'; + return $this->pStaticDereferenceLhs($node->class) . '::' . ($node->name instanceof Expr ? $node->name instanceof Expr\Variable ? $this->p($node->name) : '{' . $this->p($node->name) . '}' : $node->name) . '(' . $this->pMaybeMultiline($node->args) . ')'; } protected function pExpr_Empty(Expr\Empty_ $node) { @@ -20082,7 +20286,7 @@ class Standard extends PrettyPrinterAbstract } protected function pExpr_ClassConstFetch(Expr\ClassConstFetch $node) { - return $this->pDereferenceLhs($node->class) . '::' . $this->p($node->name); + return $this->pStaticDereferenceLhs($node->class) . '::' . $this->pObjectProperty($node->name); } protected function pExpr_PropertyFetch(Expr\PropertyFetch $node) { @@ -20094,7 +20298,7 @@ class Standard extends PrettyPrinterAbstract } protected function pExpr_StaticPropertyFetch(Expr\StaticPropertyFetch $node) { - return $this->pDereferenceLhs($node->class) . '::$' . $this->pObjectProperty($node->name); + return $this->pStaticDereferenceLhs($node->class) . '::$' . $this->pObjectProperty($node->name); } protected function pExpr_ShellExec(Expr\ShellExec $node) { @@ -20227,7 +20431,7 @@ class Standard extends PrettyPrinterAbstract } protected function pStmt_ClassConst(Stmt\ClassConst $node) { - return $this->pAttrGroups($node->attrGroups) . $this->pModifiers($node->flags) . 'const ' . $this->pCommaSeparated($node->consts) . ';'; + return $this->pAttrGroups($node->attrGroups) . $this->pModifiers($node->flags) . 'const ' . (null !== $node->type ? $this->p($node->type) . ' ' : '') . $this->pCommaSeparated($node->consts) . ';'; } protected function pStmt_Function(Stmt\Function_ $node) { @@ -20441,6 +20645,14 @@ class Standard extends PrettyPrinterAbstract return '(' . $this->p($node) . ')'; } } + protected function pStaticDereferenceLhs(Node $node) + { + if (!$this->staticDereferenceLhsRequiresParens($node)) { + return $this->p($node); + } else { + return '(' . $this->p($node) . ')'; + } + } protected function pCallLhs(Node $node) { if (!$this->callLhsRequiresParens($node)) { @@ -20449,10 +20661,13 @@ class Standard extends PrettyPrinterAbstract return '(' . $this->p($node) . ')'; } } - protected function pNewVariable(Node $node) + protected function pNewVariable(Node $node) : string { - // TODO: This is not fully accurate. - return $this->pDereferenceLhs($node); + if (!$this->newOperandRequiresParens($node)) { + return $this->p($node); + } else { + return '(' . $this->p($node) . ')'; + } } /** * @param Node[] $nodes @@ -20515,6 +20730,10 @@ abstract class PrettyPrinterAbstract // Name operand that may require ${} bracing const FIXUP_ENCAPSED = 6; // Encapsed string part + const FIXUP_NEW = 7; + // New/instanceof operand + const FIXUP_STATIC_DEREF_LHS = 8; + // LHS of static dereferencing operation protected $precedenceMap = [ // [precedence, associativity] // where for precedence -1 is %left, 0 is %nonassoc and 1 is %right @@ -21356,6 +21575,16 @@ abstract class PrettyPrinterAbstract return '(' . $this->p($subNode) . ')'; } break; + case self::FIXUP_STATIC_DEREF_LHS: + if ($this->staticDereferenceLhsRequiresParens($subNode) && !$this->origTokens->haveParens($subStartPos, $subEndPos)) { + return '(' . $this->p($subNode) . ')'; + } + break; + case self::FIXUP_NEW: + if ($this->newOperandRequiresParens($subNode) && !$this->origTokens->haveParens($subStartPos, $subEndPos)) { + return '(' . $this->p($subNode) . ')'; + } + break; case self::FIXUP_BRACED_NAME: case self::FIXUP_VAR_BRACED_NAME: if ($subNode instanceof Expr && !$this->origTokens->haveBraces($subStartPos, $subEndPos)) { @@ -21409,7 +21638,7 @@ abstract class PrettyPrinterAbstract return !($node instanceof Node\Name || $node instanceof Expr\Variable || $node instanceof Expr\ArrayDimFetch || $node instanceof Expr\FuncCall || $node instanceof Expr\MethodCall || $node instanceof Expr\NullsafeMethodCall || $node instanceof Expr\StaticCall || $node instanceof Expr\Array_); } /** - * Determines whether the LHS of a dereferencing operation must be wrapped in parenthesis. + * Determines whether the LHS of an array/object operation must be wrapped in parentheses. * * @param Node $node LHS of dereferencing operation * @@ -21417,7 +21646,39 @@ abstract class PrettyPrinterAbstract */ protected function dereferenceLhsRequiresParens(Node $node) : bool { - return !($node instanceof Expr\Variable || $node instanceof Node\Name || $node instanceof Expr\ArrayDimFetch || $node instanceof Expr\PropertyFetch || $node instanceof Expr\NullsafePropertyFetch || $node instanceof Expr\StaticPropertyFetch || $node instanceof Expr\FuncCall || $node instanceof Expr\MethodCall || $node instanceof Expr\NullsafeMethodCall || $node instanceof Expr\StaticCall || $node instanceof Expr\Array_ || $node instanceof Scalar\String_ || $node instanceof Expr\ConstFetch || $node instanceof Expr\ClassConstFetch); + // A constant can occur on the LHS of an array/object deref, but not a static deref. + return $this->staticDereferenceLhsRequiresParens($node) && !$node instanceof Expr\ConstFetch; + } + /** + * Determines whether the LHS of a static operation must be wrapped in parentheses. + * + * @param Node $node LHS of dereferencing operation + * + * @return bool Whether parentheses are required + */ + protected function staticDereferenceLhsRequiresParens(Node $node) : bool + { + return !($node instanceof Expr\Variable || $node instanceof Node\Name || $node instanceof Expr\ArrayDimFetch || $node instanceof Expr\PropertyFetch || $node instanceof Expr\NullsafePropertyFetch || $node instanceof Expr\StaticPropertyFetch || $node instanceof Expr\FuncCall || $node instanceof Expr\MethodCall || $node instanceof Expr\NullsafeMethodCall || $node instanceof Expr\StaticCall || $node instanceof Expr\Array_ || $node instanceof Scalar\String_ || $node instanceof Expr\ClassConstFetch); + } + /** + * Determines whether an expression used in "new" or "instanceof" requires parentheses. + * + * @param Node $node New or instanceof operand + * + * @return bool Whether parentheses are required + */ + protected function newOperandRequiresParens(Node $node) : bool + { + if ($node instanceof Node\Name || $node instanceof Expr\Variable) { + return \false; + } + if ($node instanceof Expr\ArrayDimFetch || $node instanceof Expr\PropertyFetch || $node instanceof Expr\NullsafePropertyFetch) { + return $this->newOperandRequiresParens($node->var); + } + if ($node instanceof Expr\StaticPropertyFetch) { + return $this->newOperandRequiresParens($node->class); + } + return \true; } /** * Print modifiers, including trailing whitespace. @@ -21508,26 +21769,7 @@ abstract class PrettyPrinterAbstract if ($this->fixupMap) { return; } - $this->fixupMap = [ - Expr\PreInc::class => ['var' => self::FIXUP_PREC_RIGHT], - Expr\PreDec::class => ['var' => self::FIXUP_PREC_RIGHT], - Expr\PostInc::class => ['var' => self::FIXUP_PREC_LEFT], - Expr\PostDec::class => ['var' => self::FIXUP_PREC_LEFT], - Expr\Instanceof_::class => ['expr' => self::FIXUP_PREC_LEFT, 'class' => self::FIXUP_PREC_RIGHT], - Expr\Ternary::class => ['cond' => self::FIXUP_PREC_LEFT, 'else' => self::FIXUP_PREC_RIGHT], - Expr\FuncCall::class => ['name' => self::FIXUP_CALL_LHS], - Expr\StaticCall::class => ['class' => self::FIXUP_DEREF_LHS], - Expr\ArrayDimFetch::class => ['var' => self::FIXUP_DEREF_LHS], - Expr\ClassConstFetch::class => ['var' => self::FIXUP_DEREF_LHS], - Expr\New_::class => ['class' => self::FIXUP_DEREF_LHS], - // TODO: FIXUP_NEW_VARIABLE - Expr\MethodCall::class => ['var' => self::FIXUP_DEREF_LHS, 'name' => self::FIXUP_BRACED_NAME], - Expr\NullsafeMethodCall::class => ['var' => self::FIXUP_DEREF_LHS, 'name' => self::FIXUP_BRACED_NAME], - Expr\StaticPropertyFetch::class => ['class' => self::FIXUP_DEREF_LHS, 'name' => self::FIXUP_VAR_BRACED_NAME], - Expr\PropertyFetch::class => ['var' => self::FIXUP_DEREF_LHS, 'name' => self::FIXUP_BRACED_NAME], - Expr\NullsafePropertyFetch::class => ['var' => self::FIXUP_DEREF_LHS, 'name' => self::FIXUP_BRACED_NAME], - Scalar\Encapsed::class => ['parts' => self::FIXUP_ENCAPSED], - ]; + $this->fixupMap = [Expr\PreInc::class => ['var' => self::FIXUP_PREC_RIGHT], Expr\PreDec::class => ['var' => self::FIXUP_PREC_RIGHT], Expr\PostInc::class => ['var' => self::FIXUP_PREC_LEFT], Expr\PostDec::class => ['var' => self::FIXUP_PREC_LEFT], Expr\Instanceof_::class => ['expr' => self::FIXUP_PREC_LEFT, 'class' => self::FIXUP_NEW], Expr\Ternary::class => ['cond' => self::FIXUP_PREC_LEFT, 'else' => self::FIXUP_PREC_RIGHT], Expr\FuncCall::class => ['name' => self::FIXUP_CALL_LHS], Expr\StaticCall::class => ['class' => self::FIXUP_STATIC_DEREF_LHS], Expr\ArrayDimFetch::class => ['var' => self::FIXUP_DEREF_LHS], Expr\ClassConstFetch::class => ['class' => self::FIXUP_STATIC_DEREF_LHS, 'name' => self::FIXUP_BRACED_NAME], Expr\New_::class => ['class' => self::FIXUP_NEW], Expr\MethodCall::class => ['var' => self::FIXUP_DEREF_LHS, 'name' => self::FIXUP_BRACED_NAME], Expr\NullsafeMethodCall::class => ['var' => self::FIXUP_DEREF_LHS, 'name' => self::FIXUP_BRACED_NAME], Expr\StaticPropertyFetch::class => ['class' => self::FIXUP_STATIC_DEREF_LHS, 'name' => self::FIXUP_VAR_BRACED_NAME], Expr\PropertyFetch::class => ['var' => self::FIXUP_DEREF_LHS, 'name' => self::FIXUP_BRACED_NAME], Expr\NullsafePropertyFetch::class => ['var' => self::FIXUP_DEREF_LHS, 'name' => self::FIXUP_BRACED_NAME], Scalar\Encapsed::class => ['parts' => self::FIXUP_ENCAPSED]]; $binaryOps = [BinaryOp\Pow::class, BinaryOp\Mul::class, BinaryOp\Div::class, BinaryOp\Mod::class, BinaryOp\Plus::class, BinaryOp\Minus::class, BinaryOp\Concat::class, BinaryOp\ShiftLeft::class, BinaryOp\ShiftRight::class, BinaryOp\Smaller::class, BinaryOp\SmallerOrEqual::class, BinaryOp\Greater::class, BinaryOp\GreaterOrEqual::class, BinaryOp\Equal::class, BinaryOp\NotEqual::class, BinaryOp\Identical::class, BinaryOp\NotIdentical::class, BinaryOp\Spaceship::class, BinaryOp\BitwiseAnd::class, BinaryOp\BitwiseXor::class, BinaryOp\BitwiseOr::class, BinaryOp\BooleanAnd::class, BinaryOp\BooleanOr::class, BinaryOp\Coalesce::class, BinaryOp\LogicalAnd::class, BinaryOp\LogicalXor::class, BinaryOp\LogicalOr::class]; foreach ($binaryOps as $binaryOp) { $this->fixupMap[$binaryOp] = ['left' => self::FIXUP_PREC_LEFT, 'right' => self::FIXUP_PREC_RIGHT]; @@ -21558,7 +21800,7 @@ abstract class PrettyPrinterAbstract $stripDoubleArrow = ['right' => \T_DOUBLE_ARROW]; $stripColon = ['left' => ':']; $stripEquals = ['left' => '=']; - $this->removalMap = ['Expr_ArrayDimFetch->dim' => $stripBoth, 'Expr_ArrayItem->key' => $stripDoubleArrow, 'Expr_ArrowFunction->returnType' => $stripColon, 'Expr_Closure->returnType' => $stripColon, 'Expr_Exit->expr' => $stripBoth, 'Expr_Ternary->if' => $stripBoth, 'Expr_Yield->key' => $stripDoubleArrow, 'Expr_Yield->value' => $stripBoth, 'Param->type' => $stripRight, 'Param->default' => $stripEquals, 'Stmt_Break->num' => $stripBoth, 'Stmt_Catch->var' => $stripLeft, 'Stmt_ClassMethod->returnType' => $stripColon, 'Stmt_Class->extends' => ['left' => \T_EXTENDS], 'Stmt_Enum->scalarType' => $stripColon, 'Stmt_EnumCase->expr' => $stripEquals, 'Expr_PrintableNewAnonClass->extends' => ['left' => \T_EXTENDS], 'Stmt_Continue->num' => $stripBoth, 'Stmt_Foreach->keyVar' => $stripDoubleArrow, 'Stmt_Function->returnType' => $stripColon, 'Stmt_If->else' => $stripLeft, 'Stmt_Namespace->name' => $stripLeft, 'Stmt_Property->type' => $stripRight, 'Stmt_PropertyProperty->default' => $stripEquals, 'Stmt_Return->expr' => $stripBoth, 'Stmt_StaticVar->default' => $stripEquals, 'Stmt_TraitUseAdaptation_Alias->newName' => $stripLeft, 'Stmt_TryCatch->finally' => $stripLeft]; + $this->removalMap = ['Expr_ArrayDimFetch->dim' => $stripBoth, 'Expr_ArrayItem->key' => $stripDoubleArrow, 'Expr_ArrowFunction->returnType' => $stripColon, 'Expr_Closure->returnType' => $stripColon, 'Expr_Exit->expr' => $stripBoth, 'Expr_Ternary->if' => $stripBoth, 'Expr_Yield->key' => $stripDoubleArrow, 'Expr_Yield->value' => $stripBoth, 'Param->type' => $stripRight, 'Param->default' => $stripEquals, 'Stmt_Break->num' => $stripBoth, 'Stmt_Catch->var' => $stripLeft, 'Stmt_ClassConst->type' => $stripRight, 'Stmt_ClassMethod->returnType' => $stripColon, 'Stmt_Class->extends' => ['left' => \T_EXTENDS], 'Stmt_Enum->scalarType' => $stripColon, 'Stmt_EnumCase->expr' => $stripEquals, 'Expr_PrintableNewAnonClass->extends' => ['left' => \T_EXTENDS], 'Stmt_Continue->num' => $stripBoth, 'Stmt_Foreach->keyVar' => $stripDoubleArrow, 'Stmt_Function->returnType' => $stripColon, 'Stmt_If->else' => $stripLeft, 'Stmt_Namespace->name' => $stripLeft, 'Stmt_Property->type' => $stripRight, 'Stmt_PropertyProperty->default' => $stripEquals, 'Stmt_Return->expr' => $stripBoth, 'Stmt_StaticVar->default' => $stripEquals, 'Stmt_TraitUseAdaptation_Alias->newName' => $stripLeft, 'Stmt_TryCatch->finally' => $stripLeft]; } protected function initializeInsertionMap() { @@ -21580,6 +21822,7 @@ abstract class PrettyPrinterAbstract 'Stmt_Break->num' => [\T_BREAK, \false, ' ', null], 'Stmt_Catch->var' => [null, \false, ' ', null], 'Stmt_ClassMethod->returnType' => [')', \false, ' : ', null], + 'Stmt_ClassConst->type' => [\T_CONST, \false, ' ', null], 'Stmt_Class->extends' => [null, \false, ' extends ', null], 'Stmt_Enum->scalarType' => [null, \false, ' : ', null], 'Stmt_EnumCase->expr' => [null, \false, ' = ', null], @@ -21703,7 +21946,7 @@ abstract class PrettyPrinterAbstract if ($this->modifierChangeMap) { return; } - $this->modifierChangeMap = ['Stmt_ClassConst->flags' => \T_CONST, 'Stmt_ClassMethod->flags' => \T_FUNCTION, 'Stmt_Class->flags' => \T_CLASS, 'Stmt_Property->flags' => \T_VARIABLE, 'Param->flags' => \T_VARIABLE]; + $this->modifierChangeMap = ['Stmt_ClassConst->flags' => \T_CONST, 'Stmt_ClassMethod->flags' => \T_FUNCTION, 'Stmt_Class->flags' => \T_CLASS, 'Stmt_Property->flags' => \T_VARIABLE, 'Expr_PrintableNewAnonClass->flags' => \T_CLASS, 'Param->flags' => \T_VARIABLE]; // List of integer subnodes that are not modifiers: // Expr_Include->type // Stmt_GroupUse->type @@ -24393,6 +24636,10 @@ final class CodeCoverage * @var ?string */ private $cacheDirectory; + /** + * @var ?Directory + */ + private $cachedReport; public function __construct(Driver $driver, Filter $filter) { $this->driver = $driver; @@ -24405,7 +24652,10 @@ final class CodeCoverage */ public function getReport() : Directory { - return (new Builder($this->analyser()))->build($this); + if ($this->cachedReport === null) { + $this->cachedReport = (new Builder($this->analyser()))->build($this); + } + return $this->cachedReport; } /** * Clears collected code coverage data. @@ -24415,6 +24665,14 @@ final class CodeCoverage $this->currentId = null; $this->data = new ProcessedCodeCoverageData(); $this->tests = []; + $this->cachedReport = null; + } + /** + * @internal + */ + public function clearCache() : void + { + $this->cachedReport = null; } /** * Returns the filter object used. @@ -24470,6 +24728,7 @@ final class CodeCoverage } $this->currentId = $id; $this->driver->start(); + $this->cachedReport = null; } /** * Stop collection of code coverage information. @@ -24484,6 +24743,7 @@ final class CodeCoverage $data = $this->driver->stop(); $this->append($data, null, $append, $linesToBeCovered, $linesToBeUsed); $this->currentId = null; + $this->cachedReport = null; return $data; } /** @@ -24504,6 +24764,7 @@ final class CodeCoverage if ($id === null) { throw new TestIdMissingException(); } + $this->cachedReport = null; $this->applyFilter($rawData); $this->applyExecutableLinesFilter($rawData); if ($this->useAnnotationsForIgnoringCode) { @@ -24550,6 +24811,7 @@ final class CodeCoverage $this->filter->includeFiles($that->filter()->files()); $this->data->merge($that->data); $this->tests = array_merge($this->tests, $that->getTests()); + $this->cachedReport = null; } public function enableCheckForUnintentionallyCoveredCode() : void { @@ -24688,7 +24950,9 @@ final class CodeCoverage if (!$this->filter->isFile($filename)) { continue; } - $data->keepLineCoverageDataOnlyForLines($filename, $this->analyser()->executableLinesIn($filename)); + $linesToBranchMap = $this->analyser()->executableLinesIn($filename); + $data->keepLineCoverageDataOnlyForLines($filename, array_keys($linesToBranchMap)); + $data->markExecutableLineByBranch($filename, $linesToBranchMap); } } private function applyIgnoredLinesFilter(RawCodeCoverageData $data) : void @@ -24787,7 +25051,7 @@ final class CodeCoverage } } } catch (\ReflectionException $e) { - throw new ReflectionException($e->getMessage(), (int) $e->getCode(), $e); + throw new ReflectionException($e->getMessage(), $e->getCode(), $e); } } return array_values($unintentionallyCoveredUnits); @@ -24799,7 +25063,7 @@ final class CodeCoverage } $this->analyser = new ParsingFileAnalyser($this->useAnnotationsForIgnoringCode, $this->ignoreDeprecatedCode); if ($this->cachesStaticAnalysis()) { - $this->analyser = new CachingFileAnalyser($this->cacheDirectory, $this->analyser); + $this->analyser = new CachingFileAnalyser($this->cacheDirectory, $this->analyser, $this->useAnnotationsForIgnoringCode, $this->ignoreDeprecatedCode); } return $this->analyser; } @@ -25896,39 +26160,35 @@ final class Filter return empty($this->files); } } -php-code-coverage +BSD 3-Clause License -Copyright (c) 2009-2022, Sebastian Bergmann . +Copyright (c) 2009-2023, Sebastian Bergmann All rights reserved. Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: +modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. - * Neither the name of Sebastian Bergmann nor the names of his - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. +3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN -ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. executableLinesIn($filename) as $line) { + foreach ($analyser->executableLinesIn($filename) as $line => $branch) { $lineCoverage[$line] = Driver::LINE_NOT_EXECUTED; } return new self([$filename => $lineCoverage], []); @@ -27546,6 +27806,34 @@ final class RawCodeCoverageData } $this->lineCoverage[$filename] = array_intersect_key($this->lineCoverage[$filename], array_flip($lines)); } + /** + * @param int[] $linesToBranchMap + */ + public function markExecutableLineByBranch(string $filename, array $linesToBranchMap) : void + { + if (!isset($this->lineCoverage[$filename])) { + return; + } + $linesByBranch = []; + foreach ($linesToBranchMap as $line => $branch) { + $linesByBranch[$branch][] = $line; + } + foreach ($this->lineCoverage[$filename] as $line => $lineStatus) { + if (!isset($linesToBranchMap[$line])) { + continue; + } + $branch = $linesToBranchMap[$line]; + if (!isset($linesByBranch[$branch])) { + continue; + } + foreach ($linesByBranch[$branch] as $lineInBranch) { + $this->lineCoverage[$filename][$lineInBranch] = $lineStatus; + } + if (Driver::LINE_EXECUTED === $lineStatus) { + unset($linesByBranch[$branch]); + } + } + } /** * @param int[] $lines */ @@ -27646,6 +27934,7 @@ use function is_string; use function ksort; use function max; use function range; +use function strpos; use function time; use DOMDocument; use PHPUnit\SebastianBergmann\CodeCoverage\CodeCoverage; @@ -27806,7 +28095,9 @@ final class Clover $xmlProject->appendChild($xmlMetrics); $buffer = $xmlDocument->saveXML(); if ($target !== null) { - Filesystem::createDirectory(dirname($target)); + if (!strpos($target, '://') !== \false) { + Filesystem::createDirectory(dirname($target)); + } if (@file_put_contents($target, $buffer) === \false) { throw new WriteOperationFailedException($target); } @@ -27834,6 +28125,7 @@ use function file_put_contents; use function preg_match; use function range; use function str_replace; +use function strpos; use function time; use DOMImplementation; use PHPUnit\SebastianBergmann\CodeCoverage\CodeCoverage; @@ -27956,7 +28248,7 @@ final class Cobertura $methodsElement->appendChild($methodElement); } } - if ($report->numberOfFunctions() === 0) { + if ($item->numberOfFunctions() === 0) { $packageElement->setAttribute('complexity', (string) $packageComplexity); continue; } @@ -27972,7 +28264,7 @@ final class Cobertura $classElement->appendChild($methodsElement); $classLinesElement = $document->createElement('lines'); $classElement->appendChild($classLinesElement); - $functions = $report->functions(); + $functions = $item->functions(); foreach ($functions as $functionName => $function) { if ($function['executableLines'] === 0) { continue; @@ -28025,7 +28317,9 @@ final class Cobertura $coverageElement->setAttribute('complexity', (string) $complexity); $buffer = $document->saveXML(); if ($target !== null) { - Filesystem::createDirectory(dirname($target)); + if (!strpos($target, '://') !== \false) { + Filesystem::createDirectory(dirname($target)); + } if (@file_put_contents($target, $buffer) === \false) { throw new WriteOperationFailedException($target); } @@ -28052,6 +28346,7 @@ use function file_put_contents; use function htmlspecialchars; use function is_string; use function round; +use function strpos; use DOMDocument; use PHPUnit\SebastianBergmann\CodeCoverage\CodeCoverage; use PHPUnit\SebastianBergmann\CodeCoverage\Driver\WriteOperationFailedException; @@ -28135,7 +28430,9 @@ final class Crap4j $root->appendChild($methodsNode); $buffer = $document->saveXML(); if ($target !== null) { - Filesystem::createDirectory(dirname($target)); + if (!strpos($target, '://') !== \false) { + Filesystem::createDirectory(dirname($target)); + } if (@file_put_contents($target, $buffer) === \false) { throw new WriteOperationFailedException($target); } @@ -28802,7 +29099,7 @@ final class File extends Renderer $templateName = $this->templatePath . ($this->hasBranchCoverage ? 'file_branch.html' : 'file.html'); $template = new Template($templateName, '{{', '}}'); $this->setCommonTemplateVariables($template, $node); - $template->setVar(['items' => $this->renderItems($node), 'lines' => $this->renderSourceWithLineCoverage($node), 'legend' => '

ExecutedNot ExecutedDead Code

', 'structure' => '']); + $template->setVar(['items' => $this->renderItems($node), 'lines' => $this->renderSourceWithLineCoverage($node), 'legend' => '

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

', 'structure' => '']); $template->renderTo($file . '.html'); if ($this->hasBranchCoverage) { $template->setVar(['items' => $this->renderItems($node), 'lines' => $this->renderSourceWithBranchCoverage($node), 'legend' => '

Fully coveredPartially coveredNot covered

', 'structure' => $this->renderBranchStructure($node)]); @@ -29398,7 +29695,7 @@ final class File extends Renderer } body { font-family: sans-serif; - font-size: 2em; + font-size: 1em; font-kerning: normal; font-variant-ligatures: common-ligatures; text-rendering: optimizeLegibility; @@ -29526,15 +29823,43 @@ table + .structure-heading { border-top: 1px solid lightgrey; padding-top: 0.5em; } + +.legend { + font-weight: bold; + margin-right: 2px; + padding-left: 10px; + padding-right: 10px; + text-align: center; +} + +.covered-by-small-tests { + background-color: #99cb84; +} + +.covered-by-medium-tests { + background-color: #c3e3b5; +} + +.covered-by-large-tests { + background-color: #dff0d8; +} + +.not-covered { + background-color: #f2dede; +} + +.not-coverable { + background-color: #fcf8e3; +} Dashboard for {{full_path}} - - - + + + @@ -29665,9 +29990,9 @@ table + .structure-heading {

- - - + + + - - + + + - - - + + + + @@ -30313,9 +30638,9 @@ $(document).ready(function() { Code Coverage for {{full_path}} - - - + + + @@ -30368,10 +30693,10 @@ $(document).ready(function() {
- - - - + + + + @@ -30555,7 +30880,7 @@ namespace PHPUnit\SebastianBergmann\CodeCoverage\Report; use function dirname; use function file_put_contents; use function serialize; -use function sprintf; +use function strpos; use PHPUnit\SebastianBergmann\CodeCoverage\CodeCoverage; use PHPUnit\SebastianBergmann\CodeCoverage\Driver\WriteOperationFailedException; use PHPUnit\SebastianBergmann\CodeCoverage\Util\Filesystem; @@ -30563,9 +30888,12 @@ final class PHP { public function process(CodeCoverage $coverage, ?string $target = null) : string { - $buffer = sprintf("clearCache(); + $buffer = "files() as $file) { $analyser->process($file); } @@ -31752,23 +32080,33 @@ final class CachingFileAnalyser implements FileAnalyser * @var ?string */ private static $cacheVersion; + /** + * @var string + */ + private $directory; /** * @var FileAnalyser */ private $analyser; /** - * @var array + * @var bool */ - private $cache = []; + private $useAnnotationsForIgnoringCode; /** - * @var string + * @var bool */ - private $directory; - public function __construct(string $directory, FileAnalyser $analyser) + private $ignoreDeprecatedCode; + /** + * @var array + */ + private $cache = []; + public function __construct(string $directory, FileAnalyser $analyser, bool $useAnnotationsForIgnoringCode, bool $ignoreDeprecatedCode) { Filesystem::createDirectory($directory); $this->analyser = $analyser; $this->directory = $directory; + $this->useAnnotationsForIgnoringCode = $useAnnotationsForIgnoringCode; + $this->ignoreDeprecatedCode = $ignoreDeprecatedCode; } public function classesIn(string $filename) : array { @@ -31845,7 +32183,8 @@ final class CachingFileAnalyser implements FileAnalyser } private function cacheFile(string $filename) : string { - return $this->directory . \DIRECTORY_SEPARATOR . md5($filename . "\x00" . file_get_contents($filename) . "\x00" . self::cacheVersion()); + $cacheKey = md5(implode("\x00", [$filename, file_get_contents($filename), self::cacheVersion(), $this->useAnnotationsForIgnoringCode, $this->ignoreDeprecatedCode])); + return $this->directory . \DIRECTORY_SEPARATOR . $cacheKey; } private static function cacheVersion() : string { @@ -31891,6 +32230,7 @@ use PHPUnit\PhpParser\Node\Stmt\Function_; use PHPUnit\PhpParser\Node\Stmt\Interface_; use PHPUnit\PhpParser\Node\Stmt\Trait_; use PHPUnit\PhpParser\Node\UnionType; +use PHPUnit\PhpParser\NodeAbstract; use PHPUnit\PhpParser\NodeTraverser; use PHPUnit\PhpParser\NodeVisitorAbstract; use PHPUnit\SebastianBergmann\Complexity\CyclomaticComplexityCalculatingVisitor; @@ -32007,8 +32347,11 @@ final class CodeUnitFindingVisitor extends NodeVisitorAbstract if ($type instanceof NullableType) { return '?' . $type->type; } - if ($type instanceof UnionType || $type instanceof IntersectionType) { - return $this->unionOrIntersectionAsString($type); + if ($type instanceof UnionType) { + return $this->unionTypeAsString($type); + } + if ($type instanceof IntersectionType) { + return $this->intersectionTypeAsString($type); } return $type->toString(); } @@ -32069,26 +32412,35 @@ final class CodeUnitFindingVisitor extends NodeVisitorAbstract { return trim(rtrim($namespacedName, $name), '\\'); } - /** - * @psalm-param UnionType|IntersectionType $type - */ - private function unionOrIntersectionAsString(ComplexType $type) : string + private function unionTypeAsString(UnionType $node) : string { - if ($type instanceof UnionType) { - $separator = '|'; - } else { - $separator = '&'; - } $types = []; - foreach ($type->types as $_type) { - if ($_type instanceof Name) { - $types[] = $_type->toCodeString(); - } else { - assert($_type instanceof Identifier); - $types[] = $_type->toString(); + foreach ($node->types as $type) { + if ($type instanceof IntersectionType) { + $types[] = '(' . $this->intersectionTypeAsString($type) . ')'; + continue; } + $types[] = $this->typeAsString($type); + } + return implode('|', $types); + } + private function intersectionTypeAsString(IntersectionType $node) : string + { + $types = []; + foreach ($node->types as $type) { + $types[] = $this->typeAsString($type); + } + return implode('&', $types); + } + /** + * @psalm-param Identifier|Name $node $node + */ + private function typeAsString(NodeAbstract $node) : string + { + if ($node instanceof Name) { + return $node->toCodeString(); } - return implode($separator, $types); + return $node->toString(); } } + * @var int */ - private $executableLines = []; + private $nextBranch = 0; + /** + * @var string + */ + private $source; /** - * @psalm-var array + * @var array */ - private $propertyLines = []; + private $executableLinesGroupedByBranch = []; /** - * @psalm-var array + * @var array */ - private $returns = []; - public function enterNode(Node $node) : void - { - if (!$node instanceof NodeAbstract) { - return; - } - $this->savePropertyLines($node); - if (!$this->isExecutable($node)) { - return; - } - foreach ($this->getLines($node, \false) as $line) { - if (isset($this->propertyLines[$line])) { - return; - } - $this->executableLines[$line] = $line; - } - } - public function afterTraverse(array $nodes) : void - { - $this->computeReturns(); - sort($this->executableLines); - } + private $unsets = []; /** - * @psalm-return array + * @var array */ - public function executableLines() : array + private $commentsToCheckForUnset = []; + public function __construct(string $source) { - return $this->executableLines; + $this->source = $source; } - private function savePropertyLines(Node $node) : void + public function enterNode(Node $node) : void { - if ($node instanceof Property) { - foreach (range($node->getStartLine(), $node->getEndLine()) as $index) { - $this->propertyLines[$index] = $index; + foreach ($node->getComments() as $comment) { + $commentLine = $comment->getStartLine(); + if (!isset($this->executableLinesGroupedByBranch[$commentLine])) { + continue; + } + foreach (explode("\n", $comment->getText()) as $text) { + $this->commentsToCheckForUnset[$commentLine] = $text; + $commentLine++; } } - } - private function computeReturns() : void - { - foreach (array_reverse($this->returns) as $node) { - foreach (range($node->getStartLine(), $node->getEndLine()) as $index) { - if (isset($this->executableLines[$index])) { - continue; + if ($node instanceof Node\Scalar\String_ || $node instanceof Node\Scalar\EncapsedStringPart) { + $startLine = $node->getStartLine() + 1; + $endLine = $node->getEndLine() - 1; + if ($startLine <= $endLine) { + foreach (range($startLine, $endLine) as $line) { + unset($this->executableLinesGroupedByBranch[$line]); } } - foreach ($this->getLines($node, \true) as $line) { - $this->executableLines[$line] = $line; + return; + } + if ($node instanceof Node\Stmt\Interface_) { + foreach (range($node->getStartLine(), $node->getEndLine()) as $line) { + $this->unsets[$line] = \true; } + return; } - } - /** - * @return int[] - */ - private function getLines(NodeAbstract $node, bool $fromReturns) : array - { - if ($node instanceof Function_ || $node instanceof ClassMethod || $node instanceof Return_ || $node instanceof Expression || $node instanceof Assign || $node instanceof Array_) { - if (!$fromReturns) { - $this->returns[] = $node; - if ($node instanceof ClassMethod && $node->name->name === '__construct') { - $existsAPromotedProperty = \false; - foreach ($node->getParams() as $param) { - if (0 !== ($param->flags & Class_::VISIBILITY_MODIFIER_MASK)) { - $existsAPromotedProperty = \true; - break; - } + if ($node instanceof Node\Stmt\Declare_ || $node instanceof Node\Stmt\DeclareDeclare || $node instanceof Node\Stmt\Else_ || $node instanceof Node\Stmt\EnumCase || $node instanceof Node\Stmt\Finally_ || $node instanceof Node\Stmt\GroupUse || $node instanceof Node\Stmt\Label || $node instanceof Node\Stmt\Namespace_ || $node instanceof Node\Stmt\Nop || $node instanceof Node\Stmt\Switch_ || $node instanceof Node\Stmt\TryCatch || $node instanceof Node\Stmt\Use_ || $node instanceof Node\Stmt\UseUse || $node instanceof Node\Expr\ConstFetch || $node instanceof Node\Expr\Match_ || $node instanceof Node\Expr\Variable || $node instanceof Node\ComplexType || $node instanceof Node\Const_ || $node instanceof Node\Identifier || $node instanceof Node\Name || $node instanceof Node\Param || $node instanceof Node\Scalar) { + return; + } + if ($node instanceof Node\Stmt\Throw_) { + $this->setLineBranch($node->expr->getEndLine(), $node->expr->getEndLine(), ++$this->nextBranch); + return; + } + if ($node instanceof Node\Stmt\Enum_ || $node instanceof Node\Stmt\Function_ || $node instanceof Node\Stmt\Class_ || $node instanceof Node\Stmt\ClassMethod || $node instanceof Node\Expr\Closure || $node instanceof Node\Stmt\Trait_) { + $isConcreteClassLike = $node instanceof Node\Stmt\Enum_ || $node instanceof Node\Stmt\Class_ || $node instanceof Node\Stmt\Trait_; + if (null !== $node->stmts) { + foreach ($node->stmts as $stmt) { + if ($stmt instanceof Node\Stmt\Nop) { + continue; } - if ($existsAPromotedProperty) { - // Only the line with `function` keyword should be listed here - // but `nikic/php-parser` doesn't provide a way to fetch it - return range($node->getStartLine(), $node->name->getEndLine()); + foreach (range($stmt->getStartLine(), $stmt->getEndLine()) as $line) { + unset($this->executableLinesGroupedByBranch[$line]); + if ($isConcreteClassLike && !$stmt instanceof Node\Stmt\ClassMethod) { + $this->unsets[$line] = \true; + } } } - return []; - } - // ugly fix for non-fully AST based processing - // self::afterTraverse()/self::computeReturns() should be rewritten using self::leaveNode() - foreach (range($node->getStartLine(), $node->getEndLine()) as $index) { - if (isset($this->executableLines[$index]) && !$node instanceof Assign) { - return []; - } } - // empty function - if ($node instanceof Function_) { - return [$node->getEndLine()]; + if ($isConcreteClassLike) { + return; } - // empty method - if ($node instanceof ClassMethod) { - if (null === $node->stmts) { - // method without body (interface prototype) - return []; + $hasEmptyBody = [] === $node->stmts || null === $node->stmts || 1 === count($node->stmts) && $node->stmts[0] instanceof Node\Stmt\Nop; + if ($hasEmptyBody) { + if ($node->getEndLine() === $node->getStartLine()) { + return; } - return [$node->getEndLine()]; + $this->setLineBranch($node->getEndLine(), $node->getEndLine(), ++$this->nextBranch); + return; } + return; } - if ($node instanceof Return_) { - if ($node->expr === null) { - return [$node->getEndLine()]; + if ($node instanceof Node\Expr\ArrowFunction) { + $startLine = max($node->getStartLine() + 1, $node->expr->getStartLine()); + $endLine = $node->expr->getEndLine(); + if ($endLine < $startLine) { + return; } - return $this->getLines($node->expr, $fromReturns); - } - if ($node instanceof Expression) { - return $this->getLines($node->expr, $fromReturns); - } - if ($node instanceof Assign) { - return [$this->getNodeStartLine($node->var)]; - } - if ($node instanceof BinaryOp) { - return $fromReturns ? $this->getLines($node->right, $fromReturns) : []; + $this->setLineBranch($startLine, $endLine, ++$this->nextBranch); + return; } - if ($node instanceof PropertyFetch || $node instanceof NullsafePropertyFetch || $node instanceof StaticPropertyFetch) { - return [$this->getNodeStartLine($node->name)]; + if ($node instanceof Node\Expr\Ternary) { + if (null !== $node->if && $node->getStartLine() !== $node->if->getEndLine()) { + $this->setLineBranch($node->if->getStartLine(), $node->if->getEndLine(), ++$this->nextBranch); + } + if ($node->getStartLine() !== $node->else->getEndLine()) { + $this->setLineBranch($node->else->getStartLine(), $node->else->getEndLine(), ++$this->nextBranch); + } + return; } - if ($node instanceof ArrayDimFetch && null !== $node->dim) { - return [$this->getNodeStartLine($node->dim)]; + if ($node instanceof Node\Expr\BinaryOp\Coalesce) { + if ($node->getStartLine() !== $node->getEndLine()) { + $this->setLineBranch($node->getEndLine(), $node->getEndLine(), ++$this->nextBranch); + } + return; } - if ($node instanceof MethodCall) { - return [$this->getNodeStartLine($node->name)]; + if ($node instanceof Node\Stmt\If_ || $node instanceof Node\Stmt\ElseIf_ || $node instanceof Node\Stmt\Case_) { + if (null === $node->cond) { + return; + } + $this->setLineBranch($node->cond->getStartLine(), $node->cond->getStartLine(), ++$this->nextBranch); + return; } - if ($node instanceof Ternary) { - $lines = [$this->getNodeStartLine($node->cond)]; - if (null !== $node->if) { - $lines[] = $this->getNodeStartLine($node->if); + if ($node instanceof Node\Stmt\For_) { + $startLine = null; + $endLine = null; + if ([] !== $node->init) { + $startLine = $node->init[0]->getStartLine(); + end($node->init); + $endLine = current($node->init)->getEndLine(); + reset($node->init); + } + if ([] !== $node->cond) { + if (null === $startLine) { + $startLine = $node->cond[0]->getStartLine(); + } + end($node->cond); + $endLine = current($node->cond)->getEndLine(); + reset($node->cond); + } + if ([] !== $node->loop) { + if (null === $startLine) { + $startLine = $node->loop[0]->getStartLine(); + } + end($node->loop); + $endLine = current($node->loop)->getEndLine(); + reset($node->loop); } - $lines[] = $this->getNodeStartLine($node->else); - return $lines; + if (null === $startLine || null === $endLine) { + return; + } + $this->setLineBranch($startLine, $endLine, ++$this->nextBranch); + return; } - if ($node instanceof Match_) { - return [$this->getNodeStartLine($node->cond)]; + if ($node instanceof Node\Stmt\Foreach_) { + $this->setLineBranch($node->expr->getStartLine(), $node->valueVar->getEndLine(), ++$this->nextBranch); + return; } - if ($node instanceof MatchArm) { - return [$this->getNodeStartLine($node->body)]; + if ($node instanceof Node\Stmt\While_ || $node instanceof Node\Stmt\Do_) { + $this->setLineBranch($node->cond->getStartLine(), $node->cond->getEndLine(), ++$this->nextBranch); + return; } - // TODO this concept should be extended for every statement class like Foreach_, For_, ... - if ($node instanceof If_ || $node instanceof ElseIf_ || $node instanceof While_ || $node instanceof Do_) { - return [$this->getNodeStartLine($node->cond)]; + if ($node instanceof Node\Stmt\Catch_) { + assert([] !== $node->types); + $startLine = $node->types[0]->getStartLine(); + end($node->types); + $endLine = current($node->types)->getEndLine(); + $this->setLineBranch($startLine, $endLine, ++$this->nextBranch); + return; } - if ($node instanceof Case_) { - if (null === $node->cond) { - // default case - return []; + if ($node instanceof Node\Expr\CallLike) { + if (isset($this->executableLinesGroupedByBranch[$node->getStartLine()])) { + $branch = $this->executableLinesGroupedByBranch[$node->getStartLine()]; + } else { + $branch = ++$this->nextBranch; } - return [$this->getNodeStartLine($node->cond)]; + $this->setLineBranch($node->getStartLine(), $node->getEndLine(), $branch); + return; } - if ($node instanceof Catch_) { - return [$this->getNodeStartLine($node->types[0])]; + if (isset($this->executableLinesGroupedByBranch[$node->getStartLine()])) { + return; } - return [$this->getNodeStartLine($node)]; + $this->setLineBranch($node->getStartLine(), $node->getEndLine(), ++$this->nextBranch); } - private function getNodeStartLine(NodeAbstract $node) : int + public function afterTraverse(array $nodes) : void { - if ($node instanceof Node\Expr\Cast || $node instanceof Node\Expr\BooleanNot || $node instanceof Node\Expr\UnaryMinus || $node instanceof Node\Expr\UnaryPlus) { - return $this->getNodeStartLine($node->expr); - } - if ($node instanceof BinaryOp) { - return $this->getNodeStartLine($node->right); - } - if ($node instanceof Node\Scalar\String_ && ($node->getAttribute('kind') === Node\Scalar\String_::KIND_HEREDOC || $node->getAttribute('kind') === Node\Scalar\String_::KIND_NOWDOC)) { - return $node->getStartLine() + 1; - } - if ($node instanceof Array_) { - if ([] === $node->items || $node->items[0] === null) { - return $node->getEndLine(); + $lines = explode("\n", $this->source); + foreach ($lines as $lineNumber => $line) { + $lineNumber++; + if (1 === preg_match('/^\\s*$/', $line) || isset($this->commentsToCheckForUnset[$lineNumber]) && 1 === preg_match(sprintf('/^\\s*%s\\s*$/', preg_quote($this->commentsToCheckForUnset[$lineNumber], '/')), $line)) { + unset($this->executableLinesGroupedByBranch[$lineNumber]); } - return $this->getNodeStartLine($node->items[0]->value); } - if ($node instanceof Assign) { - return $this->getNodeStartLine($node->expr); - } - return $node->getStartLine(); - // $node should be only a scalar here + $this->executableLinesGroupedByBranch = array_diff_key($this->executableLinesGroupedByBranch, $this->unsets); + } + public function executableLinesGroupedByBranch() : array + { + return $this->executableLinesGroupedByBranch; } - private function isExecutable(Node $node) : bool + private function setLineBranch(int $start, int $end, int $branch) : void { - return $node instanceof Assign || $node instanceof ArrayDimFetch || $node instanceof BinaryOp || $node instanceof Break_ || $node instanceof CallLike || $node instanceof Case_ || $node instanceof Catch_ || $node instanceof ClassMethod || $node instanceof Closure || $node instanceof Continue_ || $node instanceof Do_ || $node instanceof Echo_ || $node instanceof ElseIf_ || $node instanceof Encapsed || $node instanceof Expression || $node instanceof For_ || $node instanceof Foreach_ || $node instanceof Function_ || $node instanceof Goto_ || $node instanceof If_ || $node instanceof Match_ || $node instanceof MatchArm || $node instanceof MethodCall || $node instanceof NullsafePropertyFetch || $node instanceof Print_ || $node instanceof PropertyFetch || $node instanceof Return_ || $node instanceof StaticPropertyFetch || $node instanceof Ternary || $node instanceof Throw_ || $node instanceof Unset_ || $node instanceof While_; + foreach (range($start, $end) as $line) { + $this->executableLinesGroupedByBranch[$line] = $branch; + } } } useAnnotationsForIgnoringCode, $this->ignoreDeprecatedCode); - $executableLinesFindingVisitor = new ExecutableLinesFindingVisitor(); + $executableLinesFindingVisitor = new ExecutableLinesFindingVisitor($source); $traverser->addVisitor(new NameResolver()); $traverser->addVisitor(new ParentConnectingVisitor()); $traverser->addVisitor($codeUnitFindingVisitor); @@ -32594,13 +32934,13 @@ final class ParsingFileAnalyser implements FileAnalyser $traverser->traverse($nodes); // @codeCoverageIgnoreStart } catch (Error $error) { - throw new ParserException(sprintf('Cannot parse %s: %s', $filename, $error->getMessage()), (int) $error->getCode(), $error); + throw new ParserException(sprintf('Cannot parse %s: %s', $filename, $error->getMessage()), $error->getCode(), $error); } // @codeCoverageIgnoreEnd $this->classes[$filename] = $codeUnitFindingVisitor->classes(); $this->traits[$filename] = $codeUnitFindingVisitor->traits(); $this->functions[$filename] = $codeUnitFindingVisitor->functions(); - $this->executableLines[$filename] = $executableLinesFindingVisitor->executableLines(); + $this->executableLines[$filename] = $executableLinesFindingVisitor->executableLinesGroupedByBranch(); $this->ignoredLines[$filename] = []; $this->findLinesIgnoredByLineBasedAnnotations($filename, $source, $this->useAnnotationsForIgnoringCode); $this->ignoredLines[$filename] = array_unique(array_merge($this->ignoredLines[$filename], $ignoredLinesFindingVisitor->ignoredLines())); @@ -32610,35 +32950,28 @@ final class ParsingFileAnalyser implements FileAnalyser } private function findLinesIgnoredByLineBasedAnnotations(string $filename, string $source, bool $useAnnotationsForIgnoringCode) : void { - $ignore = \false; - $stop = \false; + if (!$useAnnotationsForIgnoringCode) { + return; + } + $start = \false; foreach (token_get_all($source) as $token) { - if (!is_array($token)) { + if (!is_array($token) || !(\T_COMMENT === $token[0] || \T_DOC_COMMENT === $token[0])) { continue; } - switch ($token[0]) { - case \T_COMMENT: - case \T_DOC_COMMENT: - if (!$useAnnotationsForIgnoringCode) { - break; - } - $comment = trim($token[1]); - if ($comment === '// @codeCoverageIgnore' || $comment === '//@codeCoverageIgnore') { - $ignore = \true; - $stop = \true; - } elseif ($comment === '// @codeCoverageIgnoreStart' || $comment === '//@codeCoverageIgnoreStart') { - $ignore = \true; - } elseif ($comment === '// @codeCoverageIgnoreEnd' || $comment === '//@codeCoverageIgnoreEnd') { - $stop = \true; - } - break; - } - if ($ignore) { + $comment = trim($token[1]); + if ($comment === '// @codeCoverageIgnore' || $comment === '//@codeCoverageIgnore') { $this->ignoredLines[$filename][] = $token[2]; - if ($stop) { - $ignore = \false; - $stop = \false; + continue; + } + if ($comment === '// @codeCoverageIgnoreStart' || $comment === '//@codeCoverageIgnoreStart') { + $start = $token[2]; + continue; + } + if ($comment === '// @codeCoverageIgnoreEnd' || $comment === '//@codeCoverageIgnoreEnd') { + if (\false === $start) { + $start = $token[2]; } + $this->ignoredLines[$filename] = array_merge($this->ignoredLines[$filename], range($start, $token[2])); } } } @@ -32757,7 +33090,7 @@ final class Version public static function id() : string { if (self::$version === null) { - self::$version = (new VersionId('9.2.19', dirname(__DIR__)))->getVersion(); + self::$version = (new VersionId('9.2.29', dirname(__DIR__)))->getVersion(); } return self::$version; } @@ -40279,12 +40612,13 @@ class Argument * Checks that argument matches provided callback. * * @param callable $callback + * @param string|null $customStringRepresentation Customize the __toString() representation of this token * * @return Token\CallbackToken */ - public static function that($callback) + public static function that($callback, ?string $customStringRepresentation = null) { - return new Token\CallbackToken($callback); + return new Token\CallbackToken($callback, $customStringRepresentation); } /** * Matches any single value. @@ -40307,13 +40641,13 @@ class Argument /** * Checks that argument matches all tokens * - * @param mixed ... a list of tokens + * @param mixed ...$tokens a list of tokens * * @return Token\LogicalAndToken */ - public static function allOf() + public static function allOf(...$tokens) { - return new Token\LogicalAndToken(\func_get_args()); + return new Token\LogicalAndToken($tokens); } /** * Checks that argument array or countable object has exact number of elements. @@ -40407,7 +40741,7 @@ class Argument * given precision. * * @param float $value - * @param float $precision + * @param int $precision * * @return Token\ApproximateValueToken */ @@ -40418,7 +40752,7 @@ class Argument /** * Checks that argument is in array. * - * @param array $value + * @param array $value * * @return Token\InArrayToken */ @@ -40429,7 +40763,7 @@ class Argument /** * Checks that argument is not in array. * - * @param array $value + * @param array $value * * @return Token\NotInArrayToken */ @@ -40458,14 +40792,17 @@ namespace Prophecy\Argument; class ArgumentsWildcard { /** - * @var Token\TokenInterface[] + * @var list */ private $tokens = array(); + /** + * @var string|null + */ private $string; /** * Initializes wildcard. * - * @param array $arguments Array of argument tokens or values + * @param array $arguments Array of argument tokens or values */ public function __construct(array $arguments) { @@ -40479,7 +40816,7 @@ class ArgumentsWildcard /** * Calculates wildcard match score for provided arguments. * - * @param array $arguments + * @param array $arguments * * @return false|int False OR integer score (higher - better) */ @@ -40520,7 +40857,7 @@ class ArgumentsWildcard return $this->string; } /** - * @return array + * @return list */ public function getTokens() { @@ -40549,7 +40886,7 @@ class AnyValueToken implements \Prophecy\Argument\Token\TokenInterface /** * Always scores 3 for any argument. * - * @param $argument + * @param mixed $argument * * @return int */ @@ -40646,6 +40983,10 @@ class ApproximateValueToken implements \Prophecy\Argument\Token\TokenInterface { private $value; private $precision; + /** + * @param float $value + * @param int $precision + */ public function __construct($value, $precision = 0) { $this->value = $value; @@ -40656,6 +40997,9 @@ class ApproximateValueToken implements \Prophecy\Argument\Token\TokenInterface */ public function scoreArgument($argument) { + if (!\is_float($argument) && !\is_int($argument) && !\is_numeric($argument)) { + return \false; + } return \round((float) $argument, $this->precision) === \round($this->value, $this->precision) ? 10 : \false; } /** @@ -40705,9 +41049,9 @@ class ArrayCountToken implements \Prophecy\Argument\Token\TokenInterface /** * Scores 6 when argument has preset number of elements. * - * @param $argument + * @param mixed $argument * - * @return bool|int + * @return false|int */ public function scoreArgument($argument) { @@ -40734,8 +41078,10 @@ class ArrayCountToken implements \Prophecy\Argument\Token\TokenInterface /** * Returns true if object is either array or instance of \Countable * - * @param $argument + * @param mixed $argument * @return bool + * + * @phpstan-assert-if-true array|\Countable $argument */ private function isCountable($argument) { @@ -40744,7 +41090,7 @@ class ArrayCountToken implements \Prophecy\Argument\Token\TokenInterface /** * Returns true if $argument has expected number of elements * - * @param array|\Countable $argument + * @param array|\Countable $argument * * @return bool */ @@ -40773,9 +41119,9 @@ use Prophecy\Exception\InvalidArgumentException; */ class ArrayEntryToken implements \Prophecy\Argument\Token\TokenInterface { - /** @var \Prophecy\Argument\Token\TokenInterface */ + /** @var TokenInterface */ private $key; - /** @var \Prophecy\Argument\Token\TokenInterface */ + /** @var TokenInterface */ private $value; /** * @param mixed $key exact value or token @@ -40790,10 +41136,10 @@ class ArrayEntryToken implements \Prophecy\Argument\Token\TokenInterface * Scores half of combined scores from key and value tokens for same entry. Capped at 8. * If argument implements \ArrayAccess without \Traversable, then key token is restricted to ExactValueToken. * - * @param array|\ArrayAccess|\Traversable $argument + * @param mixed $argument * - * @throws \Prophecy\Exception\InvalidArgumentException - * @return bool|int + * @throws InvalidArgumentException + * @return false|int */ public function scoreArgument($argument) { @@ -40808,6 +41154,7 @@ class ArrayEntryToken implements \Prophecy\Argument\Token\TokenInterface } $keyScores = \array_map(array($this->key, 'scoreArgument'), \array_keys($argument)); $valueScores = \array_map(array($this->value, 'scoreArgument'), $argument); + /** @var callable(int|false, int|false): (int|false) $scoreEntry */ $scoreEntry = function ($value, $key) { return $value && $key ? \min(8, ($key + $value) / 2) : \false; }; @@ -40852,7 +41199,7 @@ class ArrayEntryToken implements \Prophecy\Argument\Token\TokenInterface /** * Wraps non token $value into ExactValueToken * - * @param $value + * @param mixed $value * @return TokenInterface */ private function wrapIntoExactValueToken($value) @@ -40862,10 +41209,10 @@ class ArrayEntryToken implements \Prophecy\Argument\Token\TokenInterface /** * Converts instance of \ArrayAccess to key => value array entry * - * @param \ArrayAccess $object + * @param \ArrayAccess $object * - * @return array|null - * @throws \Prophecy\Exception\InvalidArgumentException + * @return array + * @throws InvalidArgumentException */ private function convertArrayAccessToEntry(\ArrayAccess $object) { @@ -40873,6 +41220,9 @@ class ArrayEntryToken implements \Prophecy\Argument\Token\TokenInterface throw new InvalidArgumentException(\sprintf('You can only use exact value tokens to match key of ArrayAccess object' . \PHP_EOL . 'But you used `%s`.', $this->key)); } $key = $this->key->getValue(); + if (!\is_int($key) && !\is_string($key)) { + throw new InvalidArgumentException(\sprintf('You can only use integer or string keys to match key of ArrayAccess object' . \PHP_EOL . 'But you used `%s`.', $this->key)); + } return $object->offsetExists($key) ? array($key => $object[$key]) : array(); } } @@ -40969,26 +41319,32 @@ use Prophecy\Exception\InvalidArgumentException; class CallbackToken implements \Prophecy\Argument\Token\TokenInterface { private $callback; + /** + * @var string|null + */ + private $customStringRepresentation; /** * Initializes token. * * @param callable $callback + * @param string|null $customStringRepresentation Customize the __toString() representation of this token * * @throws \Prophecy\Exception\InvalidArgumentException */ - public function __construct($callback) + public function __construct($callback, ?string $customStringRepresentation = null) { if (!\is_callable($callback)) { throw new InvalidArgumentException(\sprintf('Callable expected as an argument to CallbackToken, but got %s.', \gettype($callback))); } $this->callback = $callback; + $this->customStringRepresentation = $customStringRepresentation; } /** * Scores 7 if callback returns true, false otherwise. * - * @param $argument + * @param mixed $argument * - * @return bool|int + * @return false|int */ public function scoreArgument($argument) { @@ -41010,6 +41366,9 @@ class CallbackToken implements \Prophecy\Argument\Token\TokenInterface */ public function __toString() { + if ($this->customStringRepresentation !== null) { + return $this->customStringRepresentation; + } return 'callback()'; } } @@ -41025,8 +41384,9 @@ class CallbackToken implements \Prophecy\Argument\Token\TokenInterface */ namespace Prophecy\Argument\Token; +use Prophecy\Comparator\FactoryProvider; use PHPUnit\SebastianBergmann\Comparator\ComparisonFailure; -use Prophecy\Comparator\Factory as ComparatorFactory; +use PHPUnit\SebastianBergmann\Comparator\Factory as ComparatorFactory; use Prophecy\Util\StringUtil; /** * Exact value token. @@ -41036,28 +41396,29 @@ use Prophecy\Util\StringUtil; class ExactValueToken implements \Prophecy\Argument\Token\TokenInterface { private $value; + /** + * @var string|null + */ private $string; private $util; private $comparatorFactory; /** * Initializes token. * - * @param mixed $value - * @param StringUtil $util - * @param ComparatorFactory $comparatorFactory + * @param mixed $value */ public function __construct($value, StringUtil $util = null, ComparatorFactory $comparatorFactory = null) { $this->value = $value; $this->util = $util ?: new StringUtil(); - $this->comparatorFactory = $comparatorFactory ?: ComparatorFactory::getInstance(); + $this->comparatorFactory = $comparatorFactory ?: FactoryProvider::getInstance(); } /** * Scores 10 if argument matches preset value. * - * @param $argument + * @param mixed $argument * - * @return bool|int + * @return false|int */ public function scoreArgument($argument) { @@ -41137,13 +41498,15 @@ use Prophecy\Util\StringUtil; class IdenticalValueToken implements \Prophecy\Argument\Token\TokenInterface { private $value; + /** + * @var string|null + */ private $string; private $util; /** * Initializes token. * - * @param mixed $value - * @param StringUtil $util + * @param mixed $value */ public function __construct($value, StringUtil $util = null) { @@ -41153,9 +41516,9 @@ class IdenticalValueToken implements \Prophecy\Argument\Token\TokenInterface /** * Scores 11 if argument matches preset value. * - * @param $argument + * @param mixed $argument * - * @return bool|int + * @return false|int */ public function scoreArgument($argument) { @@ -41205,7 +41568,7 @@ class InArrayToken implements \Prophecy\Argument\Token\TokenInterface private $token = array(); private $strict; /** - * @param array $arguments tokens + * @param array $arguments tokens * @param bool $strict */ public function __construct(array $arguments, $strict = \true) @@ -41269,9 +41632,12 @@ namespace Prophecy\Argument\Token; */ class LogicalAndToken implements \Prophecy\Argument\Token\TokenInterface { + /** + * @var list + */ private $tokens = array(); /** - * @param array $arguments exact values or tokens + * @param array $arguments exact values or tokens */ public function __construct(array $arguments) { @@ -41285,9 +41651,9 @@ class LogicalAndToken implements \Prophecy\Argument\Token\TokenInterface /** * Scores maximum score from scores returned by tokens for this argument if all of them score. * - * @param $argument + * @param mixed $argument * - * @return bool|int + * @return false|int */ public function scoreArgument($argument) { @@ -41342,7 +41708,7 @@ namespace Prophecy\Argument\Token; */ class LogicalNotToken implements \Prophecy\Argument\Token\TokenInterface { - /** @var \Prophecy\Argument\Token\TokenInterface */ + /** @var TokenInterface */ private $token; /** * @param mixed $value exact value or token @@ -41354,9 +41720,9 @@ class LogicalNotToken implements \Prophecy\Argument\Token\TokenInterface /** * Scores 4 when preset token does not match the argument. * - * @param $argument + * @param mixed $argument * - * @return bool|int + * @return false|int */ public function scoreArgument($argument) { @@ -41365,7 +41731,7 @@ class LogicalNotToken implements \Prophecy\Argument\Token\TokenInterface /** * Returns true if preset token is last. * - * @return bool|int + * @return bool */ public function isLast() { @@ -41412,7 +41778,7 @@ class NotInArrayToken implements \Prophecy\Argument\Token\TokenInterface private $token = array(); private $strict; /** - * @param array $arguments tokens + * @param array $arguments tokens * @param bool $strict */ public function __construct(array $arguments, $strict = \true) @@ -41469,8 +41835,9 @@ class NotInArrayToken implements \Prophecy\Argument\Token\TokenInterface */ namespace Prophecy\Argument\Token; +use Prophecy\Comparator\FactoryProvider; use PHPUnit\SebastianBergmann\Comparator\ComparisonFailure; -use Prophecy\Comparator\Factory as ComparatorFactory; +use PHPUnit\SebastianBergmann\Comparator\Factory as ComparatorFactory; use Prophecy\Util\StringUtil; /** * Object state-checker token. @@ -41486,17 +41853,15 @@ class ObjectStateToken implements \Prophecy\Argument\Token\TokenInterface /** * Initializes token. * - * @param string $methodName - * @param mixed $value Expected return value - * @param null|StringUtil $util - * @param ComparatorFactory $comparatorFactory + * @param string $methodName + * @param mixed $value Expected return value */ public function __construct($methodName, $value, StringUtil $util = null, ComparatorFactory $comparatorFactory = null) { $this->name = $methodName; $this->value = $value; $this->util = $util ?: new StringUtil(); - $this->comparatorFactory = $comparatorFactory ?: ComparatorFactory::getInstance(); + $this->comparatorFactory = $comparatorFactory ?: FactoryProvider::getInstance(); } /** * Scores 8 if argument is an object, which method returns expected value. @@ -41507,8 +41872,9 @@ class ObjectStateToken implements \Prophecy\Argument\Token\TokenInterface */ public function scoreArgument($argument) { - if (\is_object($argument) && \method_exists($argument, $this->name)) { - $actual = \call_user_func(array($argument, $this->name)); + $methodCallable = array($argument, $this->name); + if (\is_object($argument) && \method_exists($argument, $this->name) && \is_callable($methodCallable)) { + $actual = \call_user_func($methodCallable); $comparator = $this->comparatorFactory->getComparatorFor($this->value, $actual); try { $comparator->assertEquals($this->value, $actual); @@ -41624,15 +41990,15 @@ interface TokenInterface /** * Calculates token match score for provided argument. * - * @param $argument + * @param mixed $argument * - * @return bool|int + * @return false|int */ public function scoreArgument($argument); /** * Returns true if this token prevents check of other tokens (is last one). * - * @return bool|int + * @return bool */ public function isLast(); /** @@ -41733,16 +42099,25 @@ class Call private $arguments; private $returnValue; private $exception; + /** + * @var string|null + */ private $file; + /** + * @var int|null + */ private $line; + /** + * @var \SplObjectStorage + */ private $scores; /** * Initializes call. * * @param string $methodName - * @param array $arguments + * @param array $arguments * @param mixed $returnValue - * @param Exception $exception + * @param Exception|null $exception * @param null|string $file * @param null|int $line */ @@ -41770,7 +42145,7 @@ class Call /** * Returns called method arguments. * - * @return array + * @return array */ public function getArguments() { @@ -41797,7 +42172,7 @@ class Call /** * Returns callee filename. * - * @return string + * @return string|null */ public function getFile() { @@ -41806,7 +42181,7 @@ class Call /** * Returns callee line number. * - * @return int + * @return int|null */ public function getLine() { @@ -41866,6 +42241,7 @@ class Call namespace Prophecy\Call; use Prophecy\Exception\Prophecy\MethodProphecyException; +use Prophecy\Prophecy\MethodProphecy; use Prophecy\Prophecy\ObjectProphecy; use Prophecy\Argument\ArgumentsWildcard; use Prophecy\Util\StringUtil; @@ -41884,7 +42260,7 @@ class CallCenter */ private $recordedCalls = array(); /** - * @var SplObjectStorage + * @var SplObjectStorage> */ private $unexpectedCalls; /** @@ -41900,9 +42276,9 @@ class CallCenter /** * Makes and records specific method call for object prophecy. * - * @param ObjectProphecy $prophecy + * @param ObjectProphecy $prophecy * @param string $methodName - * @param array $arguments + * @param array $arguments * * @return mixed Returns null if no promise for prophecy found or promise return value. * @@ -41914,7 +42290,7 @@ class CallCenter // Limit backtrace to last 3 calls as we don't use the rest $backtrace = \debug_backtrace(\DEBUG_BACKTRACE_IGNORE_ARGS, 3); $file = $line = null; - if (isset($backtrace[2]) && isset($backtrace[2]['file'])) { + if (isset($backtrace[2]) && isset($backtrace[2]['file']) && isset($backtrace[2]['line'])) { $file = $backtrace[2]['file']; $line = $backtrace[2]['line']; } @@ -41963,7 +42339,7 @@ class CallCenter * @param string $methodName * @param ArgumentsWildcard $wildcard * - * @return Call[] + * @return list */ public function findCalls($methodName, ArgumentsWildcard $wildcard) { @@ -41973,11 +42349,11 @@ class CallCenter })); } /** + * @return void * @throws UnexpectedCallException */ public function checkUnexpectedCalls() { - /** @var Call $call */ foreach ($this->unexpectedCalls as $call) { $prophecy = $this->unexpectedCalls[$call]; // If fake/stub doesn't have method prophecy for this call - throw exception @@ -41986,6 +42362,13 @@ class CallCenter } } } + /** + * @param ObjectProphecy $prophecy + * @param string $methodName + * @param array $arguments + * + * @return UnexpectedCallException + */ private function createUnexpectedCallException(ObjectProphecy $prophecy, $methodName, array $arguments) { $classname = \get_class($prophecy->reveal()); @@ -41998,6 +42381,12 @@ class CallCenter } return new UnexpectedCallException(\sprintf("Unexpected method call on %s:\n" . " - %s(\n" . "%s\n" . " )\n" . "expected calls were:\n" . "%s", $classname, $methodName, $argstring, \implode("\n", $expected)), $prophecy, $methodName, $arguments); } + /** + * @param string[] $arguments + * @param int $indentationLength + * + * @return string[] + */ private function indentArguments(array $arguments, $indentationLength) { return \preg_replace_callback('/^/m', function () use($indentationLength) { @@ -42005,11 +42394,13 @@ class CallCenter }, $arguments); } /** - * @param ObjectProphecy $prophecy + * @param ObjectProphecy $prophecy * @param string $methodName - * @param array $arguments + * @param array $arguments * * @return array + * + * @phpstan-return list */ private function findMethodProphecies(ObjectProphecy $prophecy, $methodName, array $arguments) { @@ -42047,7 +42438,7 @@ final class ClosureComparator extends Comparator { return \is_object($expected) && $expected instanceof \Closure && \is_object($actual) && $actual instanceof \Closure; } - public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = \false, $ignoreCase = \false, array &$processed = array()) : void + public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = \false, $ignoreCase = \false) : void { if ($expected !== $actual) { throw new ComparisonFailure( @@ -42079,6 +42470,8 @@ use PHPUnit\SebastianBergmann\Comparator\Factory as BaseFactory; * Prophecy comparator factory. * * @author Konstantin Kudryashov + * + * @deprecated Use "Prophecy\Comparator\FactoryProvider" instead to get a "SebastianBergmann\Comparator\Factory" instance. */ final class Factory extends BaseFactory { @@ -42115,6 +42508,43 @@ final class Factory extends BaseFactory */ namespace Prophecy\Comparator; +use PHPUnit\SebastianBergmann\Comparator\Factory; +/** + * Prophecy comparator factory. + * + * @author Konstantin Kudryashov + */ +final class FactoryProvider +{ + /** + * @var Factory|null + */ + private static $instance; + private function __construct() + { + } + public static function getInstance() : Factory + { + if (self::$instance === null) { + self::$instance = new Factory(); + self::$instance->register(new \Prophecy\Comparator\ClosureComparator()); + self::$instance->register(new \Prophecy\Comparator\ProphecyComparator()); + } + return self::$instance; + } +} + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Prophecy\Comparator; + use Prophecy\Prophecy\ProphecyInterface; use PHPUnit\SebastianBergmann\Comparator\ObjectComparator; /** @@ -42126,8 +42556,12 @@ class ProphecyComparator extends ObjectComparator { return \is_object($expected) && \is_object($actual) && $actual instanceof ProphecyInterface; } + /** + * @phpstan-param list $processed + */ public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = \false, $ignoreCase = \false, array &$processed = array()) : void { + \assert($actual instanceof ProphecyInterface); parent::assertEquals($expected, $actual->reveal(), $delta, $canonicalize, $ignoreCase, $processed); } } @@ -42152,10 +42586,10 @@ use ReflectionClass; */ class CachedDoubler extends \Prophecy\Doubler\Doubler { - private static $classes = array(); /** - * {@inheritdoc} + * @var array */ + private static $classes = array(); protected function createDoubleClass(ReflectionClass $class = null, array $interfaces) { $classId = $this->generateClassId($class, $interfaces); @@ -42165,8 +42599,8 @@ class CachedDoubler extends \Prophecy\Doubler\Doubler return self::$classes[$classId] = parent::createDoubleClass($class, $interfaces); } /** - * @param ReflectionClass $class - * @param ReflectionClass[] $interfaces + * @param ReflectionClass $class + * @param ReflectionClass[] $interfaces * * @return string */ @@ -42185,6 +42619,9 @@ class CachedDoubler extends \Prophecy\Doubler\Doubler \sort($parts); return \md5(\implode('', $parts)); } + /** + * @return void + */ public function resetCache() { self::$classes = array(); @@ -42282,6 +42719,7 @@ class DisableConstructorPatch implements \Prophecy\Doubler\ClassPatch\ClassPatch return; } $constructor = $node->getMethod('__construct'); + \assert($constructor !== null); foreach ($constructor->getArguments() as $argument) { $argument->setDefault(null); } @@ -42358,7 +42796,7 @@ class KeywordPatch implements \Prophecy\Doubler\ClassPatch\ClassPatchInterface /** * Returns array of php keywords. * - * @return array + * @return list */ private function getKeywords() { @@ -42526,6 +42964,7 @@ PHP $prophecyGetter->setCode('return \\call_user_func($this->objectProphecyClosure);'); if ($node->hasMethod('__call')) { $__call = $node->getMethod('__call'); + \assert($__call !== null); } else { $__call = new MethodNode('__call'); $__call->addArgument(new ArgumentNode('name')); @@ -42591,7 +43030,9 @@ class ReflectionClassNewInstancePatch implements \Prophecy\Doubler\ClassPatch\Cl */ public function apply(ClassNode $node) { - foreach ($node->getMethod('newInstance')->getArguments() as $argument) { + $method = $node->getMethod('newInstance'); + \assert($method !== null); + foreach ($method->getArguments() as $argument) { $argument->setDefault(null); } } @@ -42636,9 +43077,6 @@ class SplFileInfoPatch implements \Prophecy\Doubler\ClassPatch\ClassPatchInterfa */ public function supports(ClassNode $node) { - if (null === $node->getParentClass()) { - return \false; - } return 'SplFileInfo' === $node->getParentClass() || \is_subclass_of($node->getParentClass(), 'SplFileInfo'); } /** @@ -42650,6 +43088,7 @@ class SplFileInfoPatch implements \Prophecy\Doubler\ClassPatch\ClassPatchInterfa { if ($node->hasMethod('__construct')) { $constructor = $node->getMethod('__construct'); + \assert($constructor !== null); } else { $constructor = new MethodNode('__construct'); $node->addMethod($constructor); @@ -42758,14 +43197,14 @@ class ThrowablePatch implements \Prophecy\Doubler\ClassPatch\ClassPatchInterface $this->checkItCanBeDoubled($node); $this->setParentClassToException($node); } - private function checkItCanBeDoubled(ClassNode $node) + private function checkItCanBeDoubled(ClassNode $node) : void { $className = $node->getParentClass(); if ($className !== 'stdClass') { throw new ClassCreatorException(\sprintf('Cannot double concrete class %s as well as implement Traversable', $className), $node); } } - private function setParentClassToException(ClassNode $node) + private function setParentClassToException(ClassNode $node) : void { $node->setParentClass('Exception'); $node->removeMethod('getMessage'); @@ -42924,20 +43363,13 @@ class Doubler private $creator; private $namer; /** - * @var ClassPatchInterface[] + * @var list */ private $patches = array(); /** - * @var \Doctrine\Instantiator\Instantiator + * @var Instantiator|null */ private $instantiator; - /** - * Initializes doubler. - * - * @param ClassMirror $mirror - * @param ClassCreator $creator - * @param NameGenerator $namer - */ public function __construct(ClassMirror $mirror = null, ClassCreator $creator = null, \Prophecy\Doubler\NameGenerator $namer = null) { $this->mirror = $mirror ?: new ClassMirror(); @@ -42947,7 +43379,7 @@ class Doubler /** * Returns list of registered class patches. * - * @return ClassPatchInterface[] + * @return list */ public function getClassPatches() { @@ -42957,6 +43389,8 @@ class Doubler * Registers new class patch. * * @param ClassPatchInterface $patch + * + * @return void */ public function registerClassPatch(ClassPatchInterface $patch) { @@ -42968,9 +43402,9 @@ class Doubler /** * Creates double from specific class or/and list of interfaces. * - * @param ReflectionClass $class - * @param ReflectionClass[] $interfaces Array of ReflectionClass instances - * @param array $args Constructor arguments + * @param ReflectionClass|null $class + * @param ReflectionClass[] $interfaces Array of ReflectionClass instances + * @param array|null $args Constructor arguments * * @return DoubleInterface * @@ -42999,8 +43433,8 @@ class Doubler /** * Creates double class and returns its FQN. * - * @param ReflectionClass $class - * @param ReflectionClass[] $interfaces + * @param ReflectionClass|null $class + * @param ReflectionClass[] $interfaces * * @return string */ @@ -43039,7 +43473,8 @@ use Prophecy\Doubler\Generator\Node\TypeNodeAbstract; */ class ClassCodeGenerator { - public function __construct(\Prophecy\Doubler\Generator\TypeHintReference $typeHintReference = null) + // Used to accept an optional first argument with the deprecated Prophecy\Doubler\Generator\TypeHintReference so careful when adding a new argument in a minor version. + public function __construct() { } /** @@ -43068,7 +43503,7 @@ class ClassCodeGenerator $code .= "\n}"; return \sprintf("namespace %s {\n%s\n}", $namespace, $code); } - private function generateMethod(\Prophecy\Doubler\Generator\Node\MethodNode $method) + private function generateMethod(\Prophecy\Doubler\Generator\Node\MethodNode $method) : string { $php = \sprintf("%s %s function %s%s(%s)%s {\n", $method->getVisibility(), $method->isStatic() ? 'static' : '', $method->returnsReference() ? '&' : '', $method->getName(), \implode(', ', $this->generateArguments($method->getArguments())), ($ret = $this->generateTypes($method->getReturnTypeNode())) ? ': ' . $ret : ''); $php .= $method->getCode() . "\n"; @@ -43086,7 +43521,12 @@ class ClassCodeGenerator return \join('|', $typeNode->getTypes()); } } - private function generateArguments(array $arguments) + /** + * @param list $arguments + * + * @return list + */ + private function generateArguments(array $arguments) : array { return \array_map(function (\Prophecy\Doubler\Generator\Node\ArgumentNode $argument) { $php = $this->generateTypes($argument->getTypeNode()); @@ -43122,11 +43562,6 @@ use Prophecy\Exception\Doubler\ClassCreatorException; class ClassCreator { private $generator; - /** - * Initializes creator. - * - * @param ClassCodeGenerator $generator - */ public function __construct(\Prophecy\Doubler\Generator\ClassCodeGenerator $generator = null) { $this->generator = $generator ?: new \Prophecy\Doubler\Generator\ClassCodeGenerator(); @@ -43185,12 +43620,12 @@ use ReflectionUnionType; */ class ClassMirror { - private static $reflectableMethods = array('__construct', '__destruct', '__sleep', '__wakeup', '__toString', '__call', '__invoke'); + private const REFLECTABLE_METHODS = array('__construct', '__destruct', '__sleep', '__wakeup', '__toString', '__call', '__invoke'); /** * Reflects provided arguments into class node. * - * @param ReflectionClass|null $class - * @param ReflectionClass[] $interfaces + * @param ReflectionClass|null $class + * @param ReflectionClass[] $interfaces * * @return Node\ClassNode * @@ -43216,7 +43651,10 @@ class ClassMirror $node->addInterface('Prophecy\\Doubler\\Generator\\ReflectionInterface'); return $node; } - private function reflectClassToNode(ReflectionClass $class, \Prophecy\Doubler\Generator\Node\ClassNode $node) + /** + * @param ReflectionClass $class + */ + private function reflectClassToNode(ReflectionClass $class, \Prophecy\Doubler\Generator\Node\ClassNode $node) : void { if (\true === $class->isFinal()) { throw new ClassMirrorException(\sprintf('Could not reflect class %s as it is marked final.', $class->getName()), $class); @@ -43232,7 +43670,7 @@ class ClassMirror $this->reflectMethodToNode($method, $node); } foreach ($class->getMethods(ReflectionMethod::IS_PUBLIC) as $method) { - if (0 === \strpos($method->getName(), '_') && !\in_array($method->getName(), self::$reflectableMethods)) { + if (0 === \strpos($method->getName(), '_') && !\in_array($method->getName(), self::REFLECTABLE_METHODS)) { continue; } if (\true === $method->isFinal()) { @@ -43242,14 +43680,17 @@ class ClassMirror $this->reflectMethodToNode($method, $node); } } - private function reflectInterfaceToNode(ReflectionClass $interface, \Prophecy\Doubler\Generator\Node\ClassNode $node) + /** + * @param ReflectionClass $interface + */ + private function reflectInterfaceToNode(ReflectionClass $interface, \Prophecy\Doubler\Generator\Node\ClassNode $node) : void { $node->addInterface($interface->getName()); foreach ($interface->getMethods() as $method) { $this->reflectMethodToNode($method, $node); } } - private function reflectMethodToNode(ReflectionMethod $method, \Prophecy\Doubler\Generator\Node\ClassNode $classNode) + private function reflectMethodToNode(ReflectionMethod $method, \Prophecy\Doubler\Generator\Node\ClassNode $classNode) : void { $node = new \Prophecy\Doubler\Generator\Node\MethodNode($method->getName()); if (\true === $method->isProtected()) { @@ -43262,24 +43703,31 @@ class ClassMirror $node->setReturnsReference(); } if ($method->hasReturnType()) { + \assert($method->getReturnType() !== null); $returnTypes = $this->getTypeHints($method->getReturnType(), $method->getDeclaringClass(), $method->getReturnType()->allowsNull()); $node->setReturnTypeNode(new ReturnTypeNode(...$returnTypes)); } elseif (\method_exists($method, 'hasTentativeReturnType') && $method->hasTentativeReturnType()) { + \assert($method->getTentativeReturnType() !== null); $returnTypes = $this->getTypeHints($method->getTentativeReturnType(), $method->getDeclaringClass(), $method->getTentativeReturnType()->allowsNull()); $node->setReturnTypeNode(new ReturnTypeNode(...$returnTypes)); } if (\is_array($params = $method->getParameters()) && \count($params)) { foreach ($params as $param) { - $this->reflectArgumentToNode($param, $node); + $this->reflectArgumentToNode($param, $method->getDeclaringClass(), $node); } } $classNode->addMethod($node); } - private function reflectArgumentToNode(ReflectionParameter $parameter, \Prophecy\Doubler\Generator\Node\MethodNode $methodNode) + /** + * @param ReflectionClass $declaringClass + * + * @return void + */ + private function reflectArgumentToNode(ReflectionParameter $parameter, ReflectionClass $declaringClass, \Prophecy\Doubler\Generator\Node\MethodNode $methodNode) : void { $name = $parameter->getName() == '...' ? '__dot_dot_dot__' : $parameter->getName(); $node = new \Prophecy\Doubler\Generator\Node\ArgumentNode($name); - $typeHints = $this->getTypeHints($parameter->getType(), $parameter->getDeclaringClass(), $parameter->allowsNull()); + $typeHints = $this->getTypeHints($parameter->getType(), $declaringClass, $parameter->allowsNull()); $node->setTypeNode(new ArgumentTypeNode(...$typeHints)); if ($parameter->isVariadic()) { $node->setAsVariadic(); @@ -43292,7 +43740,7 @@ class ClassMirror } $methodNode->addArgument($node); } - private function hasDefaultValue(ReflectionParameter $parameter) + private function hasDefaultValue(ReflectionParameter $parameter) : bool { if ($parameter->isVariadic()) { return \false; @@ -43302,6 +43750,9 @@ class ClassMirror } return $parameter->isOptional() || $parameter->allowsNull() && $parameter->getType() && \PHP_VERSION_ID < 80100; } + /** + * @return mixed + */ private function getDefaultValue(ReflectionParameter $parameter) { if (!$parameter->isDefaultValueAvailable()) { @@ -43309,7 +43760,12 @@ class ClassMirror } return $parameter->getDefaultValue(); } - private function getTypeHints(?ReflectionType $type, ?ReflectionClass $class, bool $allowsNull) : array + /** + * @param ReflectionClass $class + * + * @return list + */ + private function getTypeHints(?ReflectionType $type, ReflectionClass $class, bool $allowsNull) : array { $types = []; if ($type instanceof ReflectionNamedType) { @@ -43333,6 +43789,9 @@ class ClassMirror return $class->getName(); } if ($type === 'parent') { + if (\false === $class->getParentClass()) { + throw new ClassMirrorException(\sprintf('Invalid type "parent" in class "%s" without a parent', $class->getName()), $class); + } return $class->getParentClass()->getName(); } return $type; @@ -43363,9 +43822,21 @@ namespace Prophecy\Doubler\Generator\Node; class ArgumentNode { private $name; + /** + * @var mixed + */ private $default; + /** + * @var bool + */ private $optional = \false; + /** + * @var bool + */ private $byReference = \false; + /** + * @var bool + */ private $isVariadic = \false; /** @var ArgumentTypeNode */ private $typeNode; @@ -43377,10 +43848,16 @@ class ArgumentNode $this->name = $name; $this->typeNode = new \Prophecy\Doubler\Generator\Node\ArgumentTypeNode(); } + /** + * @return string + */ public function getName() { return $this->name; } + /** + * @return void + */ public function setTypeNode(\Prophecy\Doubler\Generator\Node\ArgumentTypeNode $typeNode) { $this->typeNode = $typeNode; @@ -43389,35 +43866,65 @@ class ArgumentNode { return $this->typeNode; } + /** + * @return bool + */ public function hasDefault() { return $this->isOptional() && !$this->isVariadic(); } + /** + * @return mixed + */ public function getDefault() { return $this->default; } + /** + * @param mixed $default + * + * @return void + */ public function setDefault($default = null) { $this->optional = \true; $this->default = $default; } + /** + * @return bool + */ public function isOptional() { return $this->optional; } + /** + * @param bool $byReference + * + * @return void + */ public function setAsPassedByReference($byReference = \true) { $this->byReference = $byReference; } + /** + * @return bool + */ public function isPassedByReference() { return $this->byReference; } + /** + * @param bool $isVariadic + * + * @return void + */ public function setAsVariadic($isVariadic = \true) { $this->isVariadic = $isVariadic; } + /** + * @return bool + */ public function isVariadic() { return $this->isVariadic; @@ -43434,6 +43941,8 @@ class ArgumentNode /** * @deprecated use setArgumentTypeNode instead * @param string|null $typeHint + * + * @return void */ public function setTypeHint($typeHint = null) { @@ -43450,6 +43959,8 @@ class ArgumentNode /** * @deprecated use getArgumentTypeNode instead * @param bool $isNullable + * + * @return void */ public function setAsNullable($isNullable = \true) { @@ -43486,28 +43997,50 @@ use Prophecy\Exception\InvalidArgumentException; */ class ClassNode { + /** + * @var string + */ private $parentClass = 'stdClass'; + /** + * @var list + */ private $interfaces = array(); + /** + * @var array + * + * @phpstan-var array + */ private $properties = array(); + /** + * @var list + */ private $unextendableMethods = array(); + /** + * @var bool + */ private $readOnly = \false; /** - * @var MethodNode[] + * @var array */ private $methods = array(); + /** + * @return string + */ public function getParentClass() { return $this->parentClass; } /** * @param string $class + * + * @return void */ public function setParentClass($class) { $this->parentClass = $class ?: 'stdClass'; } /** - * @return string[] + * @return list */ public function getInterfaces() { @@ -43515,6 +44048,8 @@ class ClassNode } /** * @param string $interface + * + * @return void */ public function addInterface($interface) { @@ -43532,25 +44067,44 @@ class ClassNode { return \in_array($interface, $this->interfaces); } + /** + * @return array + * + * @phpstan-return array + */ public function getProperties() { return $this->properties; } + /** + * @param string $name + * @param string $visibility + * + * @return void + * + * @phpstan-param 'public'|'private'|'protected' $visibility + */ public function addProperty($name, $visibility = 'public') { $visibility = \strtolower($visibility); - if (!\in_array($visibility, array('public', 'private', 'protected'))) { + if (!\in_array($visibility, array('public', 'private', 'protected'), \true)) { throw new InvalidArgumentException(\sprintf('`%s` property visibility is not supported.', $visibility)); } $this->properties[$name] = $visibility; } /** - * @return MethodNode[] + * @return array */ public function getMethods() { return $this->methods; } + /** + * @param MethodNode $method + * @param bool $force + * + * @return void + */ public function addMethod(\Prophecy\Doubler\Generator\Node\MethodNode $method, $force = \false) { if (!$this->isExtendable($method->getName())) { @@ -43561,6 +44115,11 @@ class ClassNode $this->methods[$method->getName()] = $method; } } + /** + * @param string $name + * + * @return void + */ public function removeMethod($name) { unset($this->methods[$name]); @@ -43584,7 +44143,7 @@ class ClassNode return isset($this->methods[$name]); } /** - * @return string[] + * @return list */ public function getUnextendableMethods() { @@ -43592,6 +44151,8 @@ class ClassNode } /** * @param string $unextendableMethod + * + * @return void */ public function addUnextendableMethod($unextendableMethod) { @@ -43602,6 +44163,7 @@ class ClassNode } /** * @param string $method + * * @return bool */ public function isExtendable($method) @@ -43617,6 +44179,8 @@ class ClassNode } /** * @param bool $readOnly + * + * @return void */ public function setReadOnly($readOnly) { @@ -43635,7 +44199,6 @@ class ClassNode */ namespace Prophecy\Doubler\Generator\Node; -use Prophecy\Doubler\Generator\TypeHintReference; use Prophecy\Exception\InvalidArgumentException; /** * Method node. @@ -43646,66 +44209,105 @@ class MethodNode { private $name; private $code; + /** + * @var string + * + * @phpstan-var 'public'|'private'|'protected' + */ private $visibility = 'public'; + /** + * @var bool + */ private $static = \false; + /** + * @var bool + */ private $returnsReference = \false; /** @var ReturnTypeNode */ private $returnTypeNode; /** - * @var ArgumentNode[] + * @var list */ private $arguments = array(); + // Used to accept an optional third argument with the deprecated Prophecy\Doubler\Generator\TypeHintReference so careful when adding a new argument in a minor version. /** - * @param string $name - * @param string $code + * @param string $name + * @param string|null $code */ - public function __construct($name, $code = null, TypeHintReference $typeHintReference = null) + public function __construct($name, $code = null) { $this->name = $name; $this->code = $code; $this->returnTypeNode = new \Prophecy\Doubler\Generator\Node\ReturnTypeNode(); } + /** + * @return string + * + * @phpstan-return 'public'|'private'|'protected' + */ public function getVisibility() { return $this->visibility; } /** * @param string $visibility + * + * @return void */ public function setVisibility($visibility) { $visibility = \strtolower($visibility); - if (!\in_array($visibility, array('public', 'private', 'protected'))) { + if (!\in_array($visibility, array('public', 'private', 'protected'), \true)) { throw new InvalidArgumentException(\sprintf('`%s` method visibility is not supported.', $visibility)); } $this->visibility = $visibility; } + /** + * @return bool + */ public function isStatic() { return $this->static; } + /** + * @param bool $static + * + * @return void + */ public function setStatic($static = \true) { $this->static = (bool) $static; } + /** + * @return bool + */ public function returnsReference() { return $this->returnsReference; } + /** + * @return void + */ public function setReturnsReference() { $this->returnsReference = \true; } + /** + * @return string + */ public function getName() { return $this->name; } + /** + * @return void + */ public function addArgument(\Prophecy\Doubler\Generator\Node\ArgumentNode $argument) { $this->arguments[] = $argument; } /** - * @return ArgumentNode[] + * @return list */ public function getArguments() { @@ -43726,6 +44328,8 @@ class MethodNode /** * @deprecated use setReturnTypeNode instead * @param string $type + * + * @return void */ public function setReturnType($type = null) { @@ -43734,6 +44338,8 @@ class MethodNode /** * @deprecated use setReturnTypeNode instead * @param bool $bool + * + * @return void */ public function setNullableReturnType($bool = \true) { @@ -43768,11 +44374,16 @@ class MethodNode } /** * @param string $code + * + * @return void */ public function setCode($code) { $this->code = $code; } + /** + * @return string + */ public function getCode() { if ($this->returnsReference) { @@ -43780,10 +44391,16 @@ class MethodNode } return (string) $this->code; } + /** + * @return void + */ public function useParentCode() { $this->code = \sprintf('return parent::%s(%s);', $this->getName(), \implode(', ', \array_map(array($this, 'generateArgument'), $this->arguments))); } + /** + * @return string + */ private function generateArgument(\Prophecy\Doubler\Generator\Node\ArgumentNode $arg) { $argument = '$' . $arg->getName(); @@ -43822,6 +44439,8 @@ final class ReturnTypeNode extends \Prophecy\Doubler\Generator\Node\TypeNodeAbst } /** * @deprecated use hasReturnStatement + * + * @return bool */ public function isVoid() { @@ -43839,7 +44458,7 @@ namespace Prophecy\Doubler\Generator\Node; use Prophecy\Exception\Doubler\DoubleException; abstract class TypeNodeAbstract { - /** @var string[] */ + /** @var array */ protected $types = []; public function __construct(string ...$types) { @@ -43853,10 +44472,16 @@ abstract class TypeNodeAbstract { return isset($this->types['null']) && \count($this->types) <= 2; } + /** + * @return list + */ public function getTypes() : array { return \array_values($this->types); } + /** + * @return list + */ public function getNonNullTypes() : array { $nonNullTypes = $this->types; @@ -43899,6 +44524,9 @@ abstract class TypeNodeAbstract return $this->prefixWithNsSeparator($type); } } + /** + * @return void + */ protected function guardIsValidType() { if (\PHP_VERSION_ID < 80200) { @@ -43956,6 +44584,11 @@ namespace Prophecy\Doubler\Generator; */ final class TypeHintReference { + /** + * @param string $type + * + * @return bool + */ public function isBuiltInParamTypeHint($type) { switch ($type) { @@ -43975,6 +44608,11 @@ final class TypeHintReference return \false; } } + /** + * @param string $type + * + * @return bool + */ public function isBuiltInReturnTypeHint($type) { if ($type === 'void') { @@ -44008,15 +44646,22 @@ use ReflectionClass; class LazyDouble { private $doubler; + /** + * @var ReflectionClass|null + */ private $class; + /** + * @var list> + */ private $interfaces = array(); + /** + * @var array|null + */ private $arguments = null; - private $double; /** - * Initializes lazy double. - * - * @param Doubler $doubler + * @var DoubleInterface|null */ + private $double; public function __construct(\Prophecy\Doubler\Doubler $doubler) { $this->doubler = $doubler; @@ -44024,7 +44669,9 @@ class LazyDouble /** * Tells doubler to use specific class as parent one for double. * - * @param string|ReflectionClass $class + * @param string|ReflectionClass $class + * + * @return void * * @throws \Prophecy\Exception\Doubler\ClassNotFoundException * @throws \Prophecy\Exception\Doubler\DoubleException @@ -44045,7 +44692,9 @@ class LazyDouble /** * Tells doubler to implement specific interface with double. * - * @param string|ReflectionClass $interface + * @param string|ReflectionClass $interface + * + * @return void * * @throws \Prophecy\Exception\Doubler\InterfaceNotFoundException * @throws \Prophecy\Exception\Doubler\DoubleException @@ -44066,7 +44715,9 @@ class LazyDouble /** * Sets constructor arguments. * - * @param array $arguments + * @param array|null $arguments + * + * @return void */ public function setArguments(array $arguments = null) { @@ -44109,12 +44760,15 @@ use ReflectionClass; */ class NameGenerator { + /** + * @var int + */ private static $counter = 1; /** * Generates name. * - * @param ReflectionClass $class - * @param ReflectionClass[] $interfaces + * @param ReflectionClass|null $class + * @param ReflectionClass[] $interfaces * * @return string */ @@ -44152,16 +44806,28 @@ class UnexpectedCallException extends ObjectProphecyException { private $methodName; private $arguments; + /** + * @param string $message + * @param ObjectProphecy $objectProphecy + * @param string $methodName + * @param array $arguments + */ public function __construct($message, ObjectProphecy $objectProphecy, $methodName, array $arguments) { parent::__construct($message, $objectProphecy); $this->methodName = $methodName; $this->arguments = $arguments; } + /** + * @return string + */ public function getMethodName() { return $this->methodName; } + /** + * @return array + */ public function getArguments() { return $this->arguments; @@ -44183,11 +44849,18 @@ use Prophecy\Doubler\Generator\Node\ClassNode; class ClassCreatorException extends \RuntimeException implements \Prophecy\Exception\Doubler\DoublerException { private $node; + /** + * @param string $message + * @param ClassNode $node + */ public function __construct($message, ClassNode $node) { parent::__construct($message); $this->node = $node; } + /** + * @return ClassNode + */ public function getClassNode() { return $this->node; @@ -44209,11 +44882,18 @@ use ReflectionClass; class ClassMirrorException extends \RuntimeException implements \Prophecy\Exception\Doubler\DoublerException { private $class; + /** + * @param string $message + * @param ReflectionClass $class + */ public function __construct($message, ReflectionClass $class) { parent::__construct($message); $this->class = $class; } + /** + * @return ReflectionClass + */ public function getReflectedClass() { return $this->class; @@ -44243,6 +44923,9 @@ class ClassNotFoundException extends \Prophecy\Exception\Doubler\DoubleException parent::__construct($message); $this->classname = $classname; } + /** + * @return string + */ public function getClassname() { return $this->classname; @@ -44294,6 +44977,9 @@ namespace Prophecy\Exception\Doubler; class InterfaceNotFoundException extends \Prophecy\Exception\Doubler\ClassNotFoundException { + /** + * @return string + */ public function getInterfaceName() { return $this->getClassname(); @@ -44345,6 +45031,7 @@ class MethodNotExtendableException extends \Prophecy\Exception\Doubler\DoubleExc */ namespace Prophecy\Exception\Doubler; +use Prophecy\Argument\ArgumentsWildcard; class MethodNotFoundException extends \Prophecy\Exception\Doubler\DoubleException { /** @@ -44356,14 +45043,14 @@ class MethodNotFoundException extends \Prophecy\Exception\Doubler\DoubleExceptio */ private $methodName; /** - * @var array + * @var null|ArgumentsWildcard|array */ private $arguments; /** * @param string $message * @param string|object $classname * @param string $methodName - * @param null|Argument\ArgumentsWildcard|array $arguments + * @param null|ArgumentsWildcard|array $arguments */ public function __construct($message, $classname, $methodName, $arguments = null) { @@ -44372,14 +45059,23 @@ class MethodNotFoundException extends \Prophecy\Exception\Doubler\DoubleExceptio $this->methodName = $methodName; $this->arguments = $arguments; } + /** + * @return object|string + */ public function getClassname() { return $this->classname; } + /** + * @return string + */ public function getMethodName() { return $this->methodName; } + /** + * @return null|ArgumentsWildcard|array + */ public function getArguments() { return $this->arguments; @@ -44412,10 +45108,16 @@ class ReturnByReferenceException extends \Prophecy\Exception\Doubler\DoubleExcep $this->classname = $classname; $this->methodName = $methodName; } + /** + * @return string + */ public function getClassname() { return $this->classname; } + /** + * @return string + */ public function getMethodName() { return $this->methodName; @@ -44472,8 +45174,17 @@ namespace Prophecy\Exception\Prediction; use Prophecy\Prophecy\ObjectProphecy; class AggregateException extends \RuntimeException implements \Prophecy\Exception\Prediction\PredictionException { + /** + * @var list + */ private $exceptions = array(); + /** + * @var ObjectProphecy|null + */ private $objectProphecy; + /** + * @return void + */ public function append(\Prophecy\Exception\Prediction\PredictionException $exception) { $message = $exception->getMessage(); @@ -44483,18 +45194,23 @@ class AggregateException extends \RuntimeException implements \Prophecy\Exceptio $this->exceptions[] = $exception; } /** - * @return PredictionException[] + * @return list */ public function getExceptions() { return $this->exceptions; } + /** + * @param ObjectProphecy $objectProphecy + * + * @return void + */ public function setObjectProphecy(ObjectProphecy $objectProphecy) { $this->objectProphecy = $objectProphecy; } /** - * @return ObjectProphecy + * @return ObjectProphecy|null */ public function getObjectProphecy() { @@ -44567,15 +45283,25 @@ interface PredictionException extends Exception */ namespace Prophecy\Exception\Prediction; +use Prophecy\Call\Call; use Prophecy\Prophecy\MethodProphecy; class UnexpectedCallsCountException extends \Prophecy\Exception\Prediction\UnexpectedCallsException { private $expectedCount; + /** + * @param string $message + * @param MethodProphecy $methodProphecy + * @param int $count + * @param list $calls + */ public function __construct($message, MethodProphecy $methodProphecy, $count, array $calls) { parent::__construct($message, $methodProphecy, $calls); $this->expectedCount = \intval($count); } + /** + * @return int + */ public function getExpectedCount() { return $this->expectedCount; @@ -44593,16 +45319,25 @@ class UnexpectedCallsCountException extends \Prophecy\Exception\Prediction\Unexp */ namespace Prophecy\Exception\Prediction; +use Prophecy\Call\Call; use Prophecy\Prophecy\MethodProphecy; use Prophecy\Exception\Prophecy\MethodProphecyException; class UnexpectedCallsException extends MethodProphecyException implements \Prophecy\Exception\Prediction\PredictionException { private $calls = array(); + /** + * @param string $message + * @param MethodProphecy $methodProphecy + * @param list $calls + */ public function __construct($message, MethodProphecy $methodProphecy, array $calls) { parent::__construct($message, $methodProphecy); $this->calls = $calls; } + /** + * @return list + */ public function getCalls() { return $this->calls; @@ -44624,6 +45359,9 @@ use Prophecy\Prophecy\MethodProphecy; class MethodProphecyException extends \Prophecy\Exception\Prophecy\ObjectProphecyException { private $methodProphecy; + /** + * @param string $message + */ public function __construct($message, MethodProphecy $methodProphecy) { parent::__construct($message, $methodProphecy->getObjectProphecy()); @@ -44653,13 +45391,17 @@ use Prophecy\Prophecy\ObjectProphecy; class ObjectProphecyException extends \RuntimeException implements \Prophecy\Exception\Prophecy\ProphecyException { private $objectProphecy; + /** + * @param string $message + * @param ObjectProphecy $objectProphecy + */ public function __construct($message, ObjectProphecy $objectProphecy) { parent::__construct($message); $this->objectProphecy = $objectProphecy; } /** - * @return ObjectProphecy + * @return ObjectProphecy */ public function getObjectProphecy() { @@ -44694,7 +45436,6 @@ interface ProphecyException extends Exception */ namespace Prophecy\PhpDocumentor; -use PHPUnit\phpDocumentor\Reflection\DocBlock\Tag\MethodTag as LegacyMethodTag; use PHPUnit\phpDocumentor\Reflection\DocBlock\Tags\Method; /** * @author Théo FIDRY @@ -44703,6 +45444,9 @@ use PHPUnit\phpDocumentor\Reflection\DocBlock\Tags\Method; */ final class ClassAndInterfaceTagRetriever implements \Prophecy\PhpDocumentor\MethodTagRetrieverInterface { + /** + * @var MethodTagRetrieverInterface + */ private $classRetriever; public function __construct(\Prophecy\PhpDocumentor\MethodTagRetrieverInterface $classRetriever = null) { @@ -44710,21 +45454,16 @@ final class ClassAndInterfaceTagRetriever implements \Prophecy\PhpDocumentor\Met $this->classRetriever = $classRetriever; return; } - $this->classRetriever = \class_exists('PHPUnit\\phpDocumentor\\Reflection\\DocBlockFactory') && \class_exists('PHPUnit\\phpDocumentor\\Reflection\\Types\\ContextFactory') ? new \Prophecy\PhpDocumentor\ClassTagRetriever() : new \Prophecy\PhpDocumentor\LegacyClassTagRetriever(); + $this->classRetriever = new \Prophecy\PhpDocumentor\ClassTagRetriever(); } - /** - * @param \ReflectionClass $reflectionClass - * - * @return LegacyMethodTag[]|Method[] - */ public function getTagList(\ReflectionClass $reflectionClass) { return \array_merge($this->classRetriever->getTagList($reflectionClass), $this->getInterfacesTagList($reflectionClass)); } /** - * @param \ReflectionClass $reflectionClass + * @param \ReflectionClass $reflectionClass * - * @return LegacyMethodTag[]|Method[] + * @return list */ private function getInterfacesTagList(\ReflectionClass $reflectionClass) { @@ -44765,11 +45504,6 @@ final class ClassTagRetriever implements \Prophecy\PhpDocumentor\MethodTagRetrie $this->docBlockFactory = DocBlockFactory::createInstance(); $this->contextFactory = new ContextFactory(); } - /** - * @param \ReflectionClass $reflectionClass - * - * @return Method[] - */ public function getTagList(\ReflectionClass $reflectionClass) { try { @@ -44798,39 +45532,6 @@ final class ClassTagRetriever implements \Prophecy\PhpDocumentor\MethodTagRetrie */ namespace Prophecy\PhpDocumentor; -use PHPUnit\phpDocumentor\Reflection\DocBlock; -use PHPUnit\phpDocumentor\Reflection\DocBlock\Tag\MethodTag as LegacyMethodTag; -/** - * @author Théo FIDRY - * - * @internal - */ -final class LegacyClassTagRetriever implements \Prophecy\PhpDocumentor\MethodTagRetrieverInterface -{ - /** - * @param \ReflectionClass $reflectionClass - * - * @return LegacyMethodTag[] - */ - public function getTagList(\ReflectionClass $reflectionClass) - { - $phpdoc = new DocBlock($reflectionClass->getDocComment()); - return $phpdoc->getTagsByName('method'); - } -} - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace Prophecy\PhpDocumentor; - -use PHPUnit\phpDocumentor\Reflection\DocBlock\Tag\MethodTag as LegacyMethodTag; use PHPUnit\phpDocumentor\Reflection\DocBlock\Tags\Method; /** * @author Théo FIDRY @@ -44840,9 +45541,9 @@ use PHPUnit\phpDocumentor\Reflection\DocBlock\Tags\Method; interface MethodTagRetrieverInterface { /** - * @param \ReflectionClass $reflectionClass + * @param \ReflectionClass $reflectionClass * - * @return LegacyMethodTag[]|Method[] + * @return list */ public function getTagList(\ReflectionClass $reflectionClass); } @@ -44866,31 +45567,17 @@ use Prophecy\Argument\Token\AnyValuesToken; use Prophecy\Util\StringUtil; use Prophecy\Exception\Prediction\NoCallsException; /** - * Call prediction. + * Tests that there was at least one call. * * @author Konstantin Kudryashov */ class CallPrediction implements \Prophecy\Prediction\PredictionInterface { private $util; - /** - * Initializes prediction. - * - * @param StringUtil $util - */ public function __construct(StringUtil $util = null) { $this->util = $util ?: new StringUtil(); } - /** - * Tests that there was at least one call. - * - * @param Call[] $calls - * @param ObjectProphecy $object - * @param MethodProphecy $method - * - * @throws \Prophecy\Exception\Prediction\NoCallsException - */ public function check(array $calls, ObjectProphecy $object, MethodProphecy $method) { if (\count($calls)) { @@ -44923,8 +45610,7 @@ use Prophecy\Argument\Token\AnyValuesToken; use Prophecy\Util\StringUtil; use Prophecy\Exception\Prediction\UnexpectedCallsCountException; /** - * Prediction interface. - * Predictions are logical test blocks, tied to `should...` keyword. + * Tests that there was exact amount of calls made. * * @author Konstantin Kudryashov */ @@ -44933,25 +45619,13 @@ class CallTimesPrediction implements \Prophecy\Prediction\PredictionInterface private $times; private $util; /** - * Initializes prediction. - * * @param int $times - * @param StringUtil $util */ public function __construct($times, StringUtil $util = null) { $this->times = \intval($times); $this->util = $util ?: new StringUtil(); } - /** - * Tests that there was exact amount of calls made. - * - * @param Call[] $calls - * @param ObjectProphecy $object - * @param MethodProphecy $method - * - * @throws \Prophecy\Exception\Prediction\UnexpectedCallsCountException - */ public function check(array $calls, ObjectProphecy $object, MethodProphecy $method) { if ($this->times == \count($calls)) { @@ -44987,7 +45661,7 @@ use Prophecy\Exception\InvalidArgumentException; use Closure; use ReflectionFunction; /** - * Callback prediction. + * Executes preset callback. * * @author Konstantin Kudryashov */ @@ -44995,8 +45669,6 @@ class CallbackPrediction implements \Prophecy\Prediction\PredictionInterface { private $callback; /** - * Initializes callback prediction. - * * @param callable $callback Custom callback * * @throws \Prophecy\Exception\InvalidArgumentException @@ -45008,18 +45680,11 @@ class CallbackPrediction implements \Prophecy\Prediction\PredictionInterface } $this->callback = $callback; } - /** - * Executes preset callback. - * - * @param Call[] $calls - * @param ObjectProphecy $object - * @param MethodProphecy $method - */ public function check(array $calls, ObjectProphecy $object, MethodProphecy $method) { $callback = $this->callback; if ($callback instanceof Closure && \method_exists('Closure', 'bind') && (new ReflectionFunction($callback))->getClosureThis() !== null) { - $callback = Closure::bind($callback, $object); + $callback = Closure::bind($callback, $object) ?? $this->callback; } \call_user_func($callback, $calls, $object, $method); } @@ -45042,31 +45707,17 @@ use Prophecy\Prophecy\MethodProphecy; use Prophecy\Util\StringUtil; use Prophecy\Exception\Prediction\UnexpectedCallsException; /** - * No calls prediction. + * Tests that there were no calls made. * * @author Konstantin Kudryashov */ class NoCallsPrediction implements \Prophecy\Prediction\PredictionInterface { private $util; - /** - * Initializes prediction. - * - * @param null|StringUtil $util - */ public function __construct(StringUtil $util = null) { $this->util = $util ?: new StringUtil(); } - /** - * Tests that there were no calls made. - * - * @param Call[] $calls - * @param ObjectProphecy $object - * @param MethodProphecy $method - * - * @throws \Prophecy\Exception\Prediction\UnexpectedCallsException - */ public function check(array $calls, ObjectProphecy $object, MethodProphecy $method) { if (!\count($calls)) { @@ -45089,6 +45740,7 @@ class NoCallsPrediction implements \Prophecy\Prediction\PredictionInterface namespace Prophecy\Prediction; use Prophecy\Call\Call; +use Prophecy\Exception\Prediction\PredictionException; use Prophecy\Prophecy\ObjectProphecy; use Prophecy\Prophecy\MethodProphecy; /** @@ -45103,10 +45755,10 @@ interface PredictionInterface * Tests that double fulfilled prediction. * * @param Call[] $calls - * @param ObjectProphecy $object + * @param ObjectProphecy $object * @param MethodProphecy $method * - * @throws object + * @throws PredictionException * @return void */ public function check(array $calls, ObjectProphecy $object, MethodProphecy $method); @@ -45129,7 +45781,7 @@ use Prophecy\Exception\InvalidArgumentException; use Closure; use ReflectionFunction; /** - * Callback promise. + * Evaluates promise callback. * * @author Konstantin Kudryashov */ @@ -45150,20 +45802,11 @@ class CallbackPromise implements \Prophecy\Promise\PromiseInterface } $this->callback = $callback; } - /** - * Evaluates promise callback. - * - * @param array $args - * @param ObjectProphecy $object - * @param MethodProphecy $method - * - * @return mixed - */ public function execute(array $args, ObjectProphecy $object, MethodProphecy $method) { $callback = $this->callback; if ($callback instanceof Closure && \method_exists('Closure', 'bind') && (new ReflectionFunction($callback))->getClosureThis() !== null) { - $callback = Closure::bind($callback, $object); + $callback = Closure::bind($callback, $object) ?? $this->callback; } return \call_user_func($callback, $args, $object, $method); } @@ -45193,9 +45836,9 @@ interface PromiseInterface /** * Evaluates promise. * - * @param array $args - * @param ObjectProphecy $object - * @param MethodProphecy $method + * @param array $args + * @param ObjectProphecy $object + * @param MethodProphecy $method * * @return mixed */ @@ -45217,7 +45860,7 @@ use Prophecy\Exception\InvalidArgumentException; use Prophecy\Prophecy\ObjectProphecy; use Prophecy\Prophecy\MethodProphecy; /** - * Return argument promise. + * Returns nth argument if has one, null otherwise. * * @author Konstantin Kudryashov */ @@ -45241,15 +45884,6 @@ class ReturnArgumentPromise implements \Prophecy\Promise\PromiseInterface } $this->index = $index; } - /** - * Returns nth argument if has one, null otherwise. - * - * @param array $args - * @param ObjectProphecy $object - * @param MethodProphecy $method - * - * @return null|mixed - */ public function execute(array $args, ObjectProphecy $object, MethodProphecy $method) { return \count($args) > $this->index ? $args[$this->index] : null; @@ -45270,7 +45904,7 @@ namespace Prophecy\Promise; use Prophecy\Prophecy\ObjectProphecy; use Prophecy\Prophecy\MethodProphecy; /** - * Return promise. + * Returns saved values one by one until last one, then continuously returns last value. * * @author Konstantin Kudryashov */ @@ -45280,21 +45914,12 @@ class ReturnPromise implements \Prophecy\Promise\PromiseInterface /** * Initializes promise. * - * @param array $returnValues Array of values + * @param array $returnValues Array of values */ public function __construct(array $returnValues) { $this->returnValues = $returnValues; } - /** - * Returns saved values one by one until last one, then continuously returns last value. - * - * @param array $args - * @param ObjectProphecy $object - * @param MethodProphecy $method - * - * @return mixed - */ public function execute(array $args, ObjectProphecy $object, MethodProphecy $method) { $value = \array_shift($this->returnValues); @@ -45322,7 +45947,7 @@ use Prophecy\Prophecy\MethodProphecy; use Prophecy\Exception\InvalidArgumentException; use ReflectionClass; /** - * Throw promise. + * Throws predefined exception. * * @author Konstantin Kudryashov */ @@ -45330,15 +45955,17 @@ class ThrowPromise implements \Prophecy\Promise\PromiseInterface { private $exception; /** - * @var \Doctrine\Instantiator\Instantiator + * @var Instantiator|null */ private $instantiator; /** * Initializes promise. * - * @param string|\Exception|\Throwable $exception Exception class name or instance + * @param string|\Throwable $exception Exception class name or instance * * @throws \Prophecy\Exception\InvalidArgumentException + * + * @phpstan-param class-string<\Throwable>|\Throwable $exception */ public function __construct($exception) { @@ -45351,22 +45978,13 @@ class ThrowPromise implements \Prophecy\Promise\PromiseInterface } $this->exception = $exception; } - /** - * Throws predefined exception. - * - * @param array $args - * @param ObjectProphecy $object - * @param MethodProphecy $method - * - * @throws object - */ public function execute(array $args, ObjectProphecy $object, MethodProphecy $method) { if (\is_string($this->exception)) { $classname = $this->exception; $reflection = new ReflectionClass($classname); $constructor = $reflection->getConstructor(); - if ($constructor->isPublic() && 0 == $constructor->getNumberOfRequiredParameters()) { + if ($constructor === null || $constructor->isPublic() && 0 == $constructor->getNumberOfRequiredParameters()) { throw $reflection->newInstance(); } if (!$this->instantiator) { @@ -45399,6 +46017,7 @@ class ThrowPromise implements \Prophecy\Promise\PromiseInterface namespace Prophecy\Prophecy; use Prophecy\Argument; +use Prophecy\Exception\Prediction\PredictionException; use Prophecy\Prophet; use Prophecy\Promise; use Prophecy\Prediction; @@ -45406,7 +46025,6 @@ use Prophecy\Exception\Doubler\MethodNotFoundException; use Prophecy\Exception\InvalidArgumentException; use Prophecy\Exception\Prophecy\MethodProphecyException; use ReflectionNamedType; -use ReflectionType; use ReflectionUnionType; /** * Method prophecy. @@ -45417,22 +46035,40 @@ class MethodProphecy { private $objectProphecy; private $methodName; + /** + * @var Argument\ArgumentsWildcard + */ private $argumentsWildcard; + /** + * @var Promise\PromiseInterface|null + */ private $promise; + /** + * @var Prediction\PredictionInterface|null + */ private $prediction; + /** + * @var list + */ private $checkedPredictions = array(); + /** + * @var bool + */ private $bound = \false; + /** + * @var bool + */ private $voidReturnType = \false; /** - * Initializes method prophecy. - * - * @param ObjectProphecy $objectProphecy - * @param string $methodName - * @param null|Argument\ArgumentsWildcard|array $arguments + * @param ObjectProphecy $objectProphecy + * @param string $methodName + * @param Argument\ArgumentsWildcard|array $arguments * * @throws \Prophecy\Exception\Doubler\MethodNotFoundException If method not found + * + * @internal */ - public function __construct(\Prophecy\Prophecy\ObjectProphecy $objectProphecy, $methodName, $arguments = null) + public function __construct(\Prophecy\Prophecy\ObjectProphecy $objectProphecy, $methodName, $arguments) { $double = $objectProphecy->reveal(); if (!\method_exists($double, $methodName)) { @@ -45444,9 +46080,7 @@ class MethodProphecy if ($reflectedMethod->isFinal()) { throw new MethodProphecyException(\sprintf("Can not add prophecy for a method `%s::%s()`\n" . "as it is a final method.", \get_class($double), $methodName), $this); } - if (null !== $arguments) { - $this->withArguments($arguments); - } + $this->withArguments($arguments); $hasTentativeReturnType = \method_exists($reflectedMethod, 'hasTentativeReturnType') && $reflectedMethod->hasTentativeReturnType(); if (\true === $reflectedMethod->hasReturnType() || $hasTentativeReturnType) { if ($hasTentativeReturnType) { @@ -45458,8 +46092,10 @@ class MethodProphecy $types = [$reflectionType]; } elseif ($reflectionType instanceof ReflectionUnionType) { $types = $reflectionType->getTypes(); + } else { + throw new MethodProphecyException(\sprintf("Can not add prophecy for a method `%s::%s()`\nas its return type is not supported by Prophecy yet.", \get_class($double), $methodName), $this); } - $types = \array_map(function (ReflectionType $type) { + $types = \array_map(function (ReflectionNamedType $type) { return $type->getName(); }, $types); \usort($types, static function (string $type1, string $type2) { @@ -45518,7 +46154,7 @@ class MethodProphecy /** * Sets argument wildcard. * - * @param array|Argument\ArgumentsWildcard $arguments + * @param array|Argument\ArgumentsWildcard $arguments * * @return $this * @@ -45571,7 +46207,7 @@ class MethodProphecy return $this->will(new Promise\ReturnPromise(\func_get_args())); } /** - * @param array $items + * @param array $items * @param mixed $return * * @return $this @@ -45613,9 +46249,11 @@ class MethodProphecy * * @see \Prophecy\Promise\ThrowPromise * - * @param string|\Exception $exception Exception class or instance + * @param string|\Throwable $exception Exception class or instance * * @return $this + * + * @phpstan-param class-string<\Throwable>|\Throwable $exception */ public function willThrow($exception) { @@ -45669,7 +46307,7 @@ class MethodProphecy * * @see \Prophecy\Prediction\CallTimesPrediction * - * @param $count + * @param int $count * * @return $this */ @@ -45696,6 +46334,7 @@ class MethodProphecy * @return $this * * @throws \Prophecy\Exception\InvalidArgumentException + * @throws PredictionException */ public function shouldHave($prediction) { @@ -45724,6 +46363,8 @@ class MethodProphecy * @see \Prophecy\Prediction\CallPrediction * * @return $this + * + * @throws PredictionException */ public function shouldHaveBeenCalled() { @@ -45735,6 +46376,8 @@ class MethodProphecy * @see \Prophecy\Prediction\NoCallsPrediction * * @return $this + * + * @throws PredictionException */ public function shouldNotHaveBeenCalled() { @@ -45778,6 +46421,10 @@ class MethodProphecy } /** * Checks currently registered [with should(...)] prediction. + * + * @return void + * + * @throws PredictionException */ public function checkPrediction() { @@ -45807,7 +46454,7 @@ class MethodProphecy /** * Returns predictions that were checked on this object. * - * @return Prediction\PredictionInterface[] + * @return list */ public function getCheckedPredictions() { @@ -45816,7 +46463,7 @@ class MethodProphecy /** * Returns object prophecy this method prophecy is tied to. * - * @return ObjectProphecy + * @return ObjectProphecy */ public function getObjectProphecy() { @@ -45847,6 +46494,9 @@ class MethodProphecy { return $this->voidReturnType; } + /** + * @return void + */ private function bindToObjectProphecy() { if ($this->bound) { @@ -45868,8 +46518,9 @@ class MethodProphecy */ namespace Prophecy\Prophecy; +use Prophecy\Comparator\FactoryProvider; use PHPUnit\SebastianBergmann\Comparator\ComparisonFailure; -use Prophecy\Comparator\Factory as ComparatorFactory; +use PHPUnit\SebastianBergmann\Comparator\Factory as ComparatorFactory; use Prophecy\Call\Call; use Prophecy\Doubler\LazyDouble; use Prophecy\Argument\ArgumentsWildcard; @@ -45879,9 +46530,10 @@ use Prophecy\Exception\Prophecy\MethodProphecyException; use Prophecy\Exception\Prediction\AggregateException; use Prophecy\Exception\Prediction\PredictionException; /** - * Object prophecy. - * * @author Konstantin Kudryashov + * + * @template-covariant T of object + * @template-implements ProphecyInterface */ class ObjectProphecy implements \Prophecy\Prophecy\ProphecyInterface { @@ -45890,23 +46542,15 @@ class ObjectProphecy implements \Prophecy\Prophecy\ProphecyInterface private $revealer; private $comparatorFactory; /** - * @var MethodProphecy[][] + * @var array> */ private $methodProphecies = array(); - /** - * Initializes object prophecy. - * - * @param LazyDouble $lazyDouble - * @param CallCenter $callCenter - * @param RevealerInterface $revealer - * @param ComparatorFactory $comparatorFactory - */ public function __construct(LazyDouble $lazyDouble, CallCenter $callCenter = null, \Prophecy\Prophecy\RevealerInterface $revealer = null, ComparatorFactory $comparatorFactory = null) { $this->lazyDouble = $lazyDouble; $this->callCenter = $callCenter ?: new CallCenter(); $this->revealer = $revealer ?: new \Prophecy\Prophecy\Revealer(); - $this->comparatorFactory = $comparatorFactory ?: ComparatorFactory::getInstance(); + $this->comparatorFactory = $comparatorFactory ?: FactoryProvider::getInstance(); } /** * Forces double to extend specific class. @@ -45914,6 +46558,10 @@ class ObjectProphecy implements \Prophecy\Prophecy\ProphecyInterface * @param string $class * * @return $this + * + * @template U + * @phpstan-param class-string $class + * @phpstan-this-out static */ public function willExtend($class) { @@ -45926,6 +46574,10 @@ class ObjectProphecy implements \Prophecy\Prophecy\ProphecyInterface * @param string $interface * * @return $this + * + * @template U + * @phpstan-param class-string $interface + * @phpstan-this-out static */ public function willImplement($interface) { @@ -45935,7 +46587,7 @@ class ObjectProphecy implements \Prophecy\Prophecy\ProphecyInterface /** * Sets constructor arguments. * - * @param array $arguments + * @param array $arguments * * @return $this */ @@ -45950,11 +46602,13 @@ class ObjectProphecy implements \Prophecy\Prophecy\ProphecyInterface * @return object * * @throws \Prophecy\Exception\Prophecy\ObjectProphecyException If double doesn't implement needed interface + * + * @phpstan-return T */ public function reveal() { $double = $this->lazyDouble->getInstance(); - if (null === $double || !$double instanceof \Prophecy\Prophecy\ProphecySubjectInterface) { + if (!$double instanceof \Prophecy\Prophecy\ProphecySubjectInterface) { throw new ObjectProphecyException("Generated double must implement ProphecySubjectInterface, but it does not.\n" . 'It seems you have wrongly configured doubler without required ClassPatch.', $this); } $double->setProphecy($this); @@ -45965,15 +46619,10 @@ class ObjectProphecy implements \Prophecy\Prophecy\ProphecyInterface * * @param MethodProphecy $methodProphecy * - * @throws \Prophecy\Exception\Prophecy\MethodProphecyException If method prophecy doesn't - * have arguments wildcard + * @return void */ public function addMethodProphecy(\Prophecy\Prophecy\MethodProphecy $methodProphecy) { - $argumentsWildcard = $methodProphecy->getArgumentsWildcard(); - if (null === $argumentsWildcard) { - throw new MethodProphecyException(\sprintf("Can not add prophecy for a method `%s::%s()`\n" . "as you did not specify arguments wildcard for it.", \get_class($this->reveal()), $methodProphecy->getMethodName()), $methodProphecy); - } $methodName = \strtolower($methodProphecy->getMethodName()); if (!isset($this->methodProphecies[$methodName])) { $this->methodProphecies[$methodName] = array(); @@ -45985,7 +46634,9 @@ class ObjectProphecy implements \Prophecy\Prophecy\ProphecyInterface * * @param null|string $methodName * - * @return MethodProphecy[] + * @return MethodProphecy[]|array + * + * @phpstan-return ($methodName is string ? list : array>) */ public function getMethodProphecies($methodName = null) { @@ -46002,13 +46653,14 @@ class ObjectProphecy implements \Prophecy\Prophecy\ProphecyInterface * Makes specific method call. * * @param string $methodName - * @param array $arguments + * @param array $arguments * * @return mixed */ public function makeProphecyMethodCall($methodName, array $arguments) { $arguments = $this->revealer->reveal($arguments); + \assert(\is_array($arguments)); $return = $this->callCenter->makeCall($this, $methodName, $arguments); return $this->revealer->reveal($return); } @@ -46018,7 +46670,7 @@ class ObjectProphecy implements \Prophecy\Prophecy\ProphecyInterface * @param string $methodName * @param ArgumentsWildcard $wildcard * - * @return Call[] + * @return list */ public function findProphecyMethodCalls($methodName, ArgumentsWildcard $wildcard) { @@ -46027,6 +46679,8 @@ class ObjectProphecy implements \Prophecy\Prophecy\ProphecyInterface /** * Checks that registered method predictions do not fail. * + * @return void + * * @throws \Prophecy\Exception\Prediction\AggregateException If any of registered predictions fail * @throws \Prophecy\Exception\Call\UnexpectedCallException */ @@ -46052,13 +46706,15 @@ class ObjectProphecy implements \Prophecy\Prophecy\ProphecyInterface * Creates new method prophecy using specified method name and arguments. * * @param string $methodName - * @param array $arguments + * @param array $arguments * * @return MethodProphecy */ public function __call($methodName, array $arguments) { - $arguments = new ArgumentsWildcard($this->revealer->reveal($arguments)); + $arguments = $this->revealer->reveal($arguments); + \assert(\is_array($arguments)); + $arguments = new ArgumentsWildcard($arguments); foreach ($this->getMethodProphecies($methodName) as $prophecy) { $argumentsWildcard = $prophecy->getArgumentsWildcard(); $comparator = $this->comparatorFactory->getComparatorFor($argumentsWildcard, $arguments); @@ -46086,6 +46742,8 @@ class ObjectProphecy implements \Prophecy\Prophecy\ProphecyInterface * * @param string $name * @param mixed $value + * + * @return void */ public function __set($name, $value) { @@ -46108,6 +46766,8 @@ namespace Prophecy\Prophecy; * Core Prophecy interface. * * @author Konstantin Kudryashov + * + * @template-covariant T of object */ interface ProphecyInterface { @@ -46115,6 +46775,8 @@ interface ProphecyInterface * Reveals prophecy object (double) . * * @return object + * + * @phpstan-return T */ public function reveal(); } @@ -46140,13 +46802,15 @@ interface ProphecySubjectInterface /** * Sets subject prophecy. * - * @param ProphecyInterface $prophecy + * @param ProphecyInterface $prophecy + * + * @return void */ public function setProphecy(\Prophecy\Prophecy\ProphecyInterface $prophecy); /** * Returns subject prophecy. * - * @return ProphecyInterface + * @return ProphecyInterface */ public function getProphecy(); } @@ -46248,20 +46912,16 @@ use Prophecy\Exception\Prediction\AggregateException; */ class Prophet { + /** + * @var Doubler + */ private $doubler; private $revealer; private $util; /** - * @var ObjectProphecy[] + * @var list> */ private $prophecies = array(); - /** - * Initializes Prophet. - * - * @param null|Doubler $doubler - * @param null|RevealerInterface $revealer - * @param null|StringUtil $util - */ public function __construct(Doubler $doubler = null, RevealerInterface $revealer = null, StringUtil $util = null) { if (null === $doubler) { @@ -46285,6 +46945,10 @@ class Prophet * @param null|string $classOrInterface Class or interface name * * @return ObjectProphecy + * + * @template T of object + * @phpstan-param class-string|null $classOrInterface + * @phpstan-return ObjectProphecy */ public function prophesize($classOrInterface = null) { @@ -46300,7 +46964,7 @@ class Prophet /** * Returns all created object prophecies. * - * @return ObjectProphecy[] + * @return list> */ public function getProphecies() { @@ -46318,6 +46982,8 @@ class Prophet /** * Checks all predictions defined by prophecies of this Prophet. * + * @return void + * * @throws Exception\Prediction\AggregateException If any prediction fails */ public function checkPredictions() @@ -46381,7 +47047,7 @@ class ExportUtil * and public properties. * * @param mixed $value - * @return array + * @return array */ public static function toArray($value) { @@ -46438,7 +47104,7 @@ class ExportUtil return "{$value}.0"; } if (\is_resource($value)) { - return \sprintf('resource(%d) of type (%s)', $value, \get_resource_type($value)); + return \sprintf('resource(%d) of type (%s)', (int) $value, \get_resource_type($value)); } if (\is_string($value)) { // Match for most non printable chars somewhat taking multibyte chars into account @@ -46538,7 +47204,7 @@ class StringUtil if (\is_object($value)) { return $exportObject ? \Prophecy\Util\ExportUtil::export($value) : \sprintf('%s#%s', \get_class($value), \spl_object_id($value)); } - if (\true === $value || \false === $value) { + if (\is_bool($value)) { return $value ? 'true' : 'false'; } if (\is_string($value)) { @@ -46551,6 +47217,7 @@ class StringUtil if (null === $value) { return 'null'; } + \assert(\is_int($value) || \is_float($value)); return (string) $value; } /** @@ -46572,7 +47239,7 @@ class StringUtil - This Schema file defines the rules by which the XML configuration file of PHPUnit 9.5 may be structured. + This Schema file defines the rules by which the XML configuration file of PHPUnit 9.6 may be structured. @@ -46627,7 +47294,7 @@ class StringUtil - + @@ -46959,6 +47626,7 @@ use Countable; use DOMAttr; use DOMDocument; use DOMElement; +use Generator; use PHPUnit\Framework\Constraint\ArrayHasKey; use PHPUnit\Framework\Constraint\Callback; use PHPUnit\Framework\Constraint\ClassHasAttribute; @@ -46994,6 +47662,7 @@ use PHPUnit\Framework\Constraint\LogicalOr; use PHPUnit\Framework\Constraint\LogicalXor; use PHPUnit\Framework\Constraint\ObjectEquals; use PHPUnit\Framework\Constraint\ObjectHasAttribute; +use PHPUnit\Framework\Constraint\ObjectHasProperty; use PHPUnit\Framework\Constraint\RegularExpression; use PHPUnit\Framework\Constraint\SameSize; use PHPUnit\Framework\Constraint\StringContains; @@ -47138,6 +47807,9 @@ abstract class Assert */ public static function assertCount(int $expectedCount, $haystack, string $message = '') : void { + if ($haystack instanceof Generator) { + self::createWarning('Passing an argument of type Generator for the $haystack parameter is deprecated. Support for this will be removed in PHPUnit 10.'); + } if (!$haystack instanceof Countable && !is_iterable($haystack)) { throw \PHPUnit\Framework\InvalidArgumentException::create(2, 'countable or iterable'); } @@ -47154,6 +47826,9 @@ abstract class Assert */ public static function assertNotCount(int $expectedCount, $haystack, string $message = '') : void { + if ($haystack instanceof Generator) { + self::createWarning('Passing an argument of type Generator for the $haystack parameter is deprecated. Support for this will be removed in PHPUnit 10.'); + } if (!$haystack instanceof Countable && !is_iterable($haystack)) { throw \PHPUnit\Framework\InvalidArgumentException::create(2, 'countable or iterable'); } @@ -47265,6 +47940,9 @@ abstract class Assert */ public static function assertEmpty($actual, string $message = '') : void { + if ($actual instanceof Generator) { + self::createWarning('Passing an argument of type Generator for the $actual parameter is deprecated. Support for this will be removed in PHPUnit 10.'); + } static::assertThat($actual, static::isEmpty(), $message); } /** @@ -47277,6 +47955,9 @@ abstract class Assert */ public static function assertNotEmpty($actual, string $message = '') : void { + if ($actual instanceof Generator) { + self::createWarning('Passing an argument of type Generator for the $actual parameter is deprecated. Support for this will be removed in PHPUnit 10.'); + } static::assertThat($actual, static::logicalNot(static::isEmpty()), $message); } /** @@ -47881,9 +48562,12 @@ abstract class Assert * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws Exception * @throws ExpectationFailedException + * + * @deprecated https://github.com/sebastianbergmann/phpunit/issues/4601 */ public static function assertClassHasAttribute(string $attributeName, string $className, string $message = '') : void { + self::createWarning('assertClassHasAttribute() is deprecated and will be removed in PHPUnit 10.'); if (!self::isValidClassAttributeName($attributeName)) { throw \PHPUnit\Framework\InvalidArgumentException::create(1, 'valid attribute name'); } @@ -47898,9 +48582,12 @@ abstract class Assert * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws Exception * @throws ExpectationFailedException + * + * @deprecated https://github.com/sebastianbergmann/phpunit/issues/4601 */ public static function assertClassNotHasAttribute(string $attributeName, string $className, string $message = '') : void { + self::createWarning('assertClassNotHasAttribute() is deprecated and will be removed in PHPUnit 10.'); if (!self::isValidClassAttributeName($attributeName)) { throw \PHPUnit\Framework\InvalidArgumentException::create(1, 'valid attribute name'); } @@ -47915,9 +48602,12 @@ abstract class Assert * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws Exception * @throws ExpectationFailedException + * + * @deprecated https://github.com/sebastianbergmann/phpunit/issues/4601 */ public static function assertClassHasStaticAttribute(string $attributeName, string $className, string $message = '') : void { + self::createWarning('assertClassHasStaticAttribute() is deprecated and will be removed in PHPUnit 10.'); if (!self::isValidClassAttributeName($attributeName)) { throw \PHPUnit\Framework\InvalidArgumentException::create(1, 'valid attribute name'); } @@ -47932,9 +48622,12 @@ abstract class Assert * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws Exception * @throws ExpectationFailedException + * + * @deprecated https://github.com/sebastianbergmann/phpunit/issues/4601 */ public static function assertClassNotHasStaticAttribute(string $attributeName, string $className, string $message = '') : void { + self::createWarning('assertClassNotHasStaticAttribute() is deprecated and will be removed in PHPUnit 10.'); if (!self::isValidClassAttributeName($attributeName)) { throw \PHPUnit\Framework\InvalidArgumentException::create(1, 'valid attribute name'); } @@ -47951,9 +48644,12 @@ abstract class Assert * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws Exception * @throws ExpectationFailedException + * + * @deprecated https://github.com/sebastianbergmann/phpunit/issues/4601 */ public static function assertObjectHasAttribute(string $attributeName, $object, string $message = '') : void { + self::createWarning('assertObjectHasAttribute() is deprecated and will be removed in PHPUnit 10. Refactor your test to use assertObjectHasProperty() instead.'); if (!self::isValidObjectAttributeName($attributeName)) { throw \PHPUnit\Framework\InvalidArgumentException::create(1, 'valid attribute name'); } @@ -47970,9 +48666,12 @@ abstract class Assert * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws Exception * @throws ExpectationFailedException + * + * @deprecated https://github.com/sebastianbergmann/phpunit/issues/4601 */ public static function assertObjectNotHasAttribute(string $attributeName, $object, string $message = '') : void { + self::createWarning('assertObjectNotHasAttribute() is deprecated and will be removed in PHPUnit 10. Refactor your test to use assertObjectNotHasProperty() instead.'); if (!self::isValidObjectAttributeName($attributeName)) { throw \PHPUnit\Framework\InvalidArgumentException::create(1, 'valid attribute name'); } @@ -47981,6 +48680,24 @@ abstract class Assert } static::assertThat($object, new LogicalNot(new ObjectHasAttribute($attributeName)), $message); } + /** + * Asserts that an object has a specified property. + * + * @throws ExpectationFailedException + */ + public static final function assertObjectHasProperty(string $propertyName, object $object, string $message = '') : void + { + static::assertThat($object, new ObjectHasProperty($propertyName), $message); + } + /** + * Asserts that an object does not have a specified property. + * + * @throws ExpectationFailedException + */ + public static final function assertObjectNotHasProperty(string $propertyName, object $object, string $message = '') : void + { + static::assertThat($object, new LogicalNot(new ObjectHasProperty($propertyName)), $message); + } /** * Asserts that two variables have the same type and value. * Used on objects, it asserts that two variables reference @@ -48405,6 +49122,12 @@ abstract class Assert */ public static function assertSameSize($expected, $actual, string $message = '') : void { + if ($expected instanceof Generator) { + self::createWarning('Passing an argument of type Generator for the $expected parameter is deprecated. Support for this will be removed in PHPUnit 10.'); + } + if ($actual instanceof Generator) { + self::createWarning('Passing an argument of type Generator for the $actual parameter is deprecated. Support for this will be removed in PHPUnit 10.'); + } if (!$expected instanceof Countable && !is_iterable($expected)) { throw \PHPUnit\Framework\InvalidArgumentException::create(1, 'countable or iterable'); } @@ -48426,6 +49149,12 @@ abstract class Assert */ public static function assertNotSameSize($expected, $actual, string $message = '') : void { + if ($expected instanceof Generator) { + self::createWarning('Passing an argument of type Generator for the $expected parameter is deprecated. Support for this will be removed in PHPUnit 10.'); + } + if ($actual instanceof Generator) { + self::createWarning('Passing an argument of type Generator for the $actual parameter is deprecated. Support for this will be removed in PHPUnit 10.'); + } if (!$expected instanceof Countable && !is_iterable($expected)) { throw \PHPUnit\Framework\InvalidArgumentException::create(1, 'countable or iterable'); } @@ -48960,16 +49689,28 @@ abstract class Assert { return static::logicalOr(new IsEqual($value), new GreaterThan($value)); } + /** + * @deprecated https://github.com/sebastianbergmann/phpunit/issues/4601 + */ public static function classHasAttribute(string $attributeName) : ClassHasAttribute { + self::createWarning('classHasAttribute() is deprecated and will be removed in PHPUnit 10.'); return new ClassHasAttribute($attributeName); } + /** + * @deprecated https://github.com/sebastianbergmann/phpunit/issues/4601 + */ public static function classHasStaticAttribute(string $attributeName) : ClassHasStaticAttribute { + self::createWarning('classHasStaticAttribute() is deprecated and will be removed in PHPUnit 10.'); return new ClassHasStaticAttribute($attributeName); } + /** + * @deprecated https://github.com/sebastianbergmann/phpunit/issues/4601 + */ public static function objectHasAttribute($attributeName) : ObjectHasAttribute { + self::createWarning('objectHasAttribute() is deprecated and will be removed in PHPUnit 10.'); return new ObjectHasAttribute($attributeName); } public static function identicalTo($value) : IsIdentical @@ -50484,6 +51225,40 @@ if (!function_exists('PHPUnit\\Framework\\assertObjectNotHasAttribute')) { \PHPUnit\Framework\Assert::assertObjectNotHasAttribute(...func_get_args()); } } +if (!function_exists('PHPUnit\\Framework\\assertObjectHasProperty')) { + /** + * Asserts that an object has a specified property. + * + * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * @throws Exception + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + * + * @see Assert::assertObjectHasProperty + */ + function assertObjectHasProperty(string $attributeName, object $object, string $message = '') : void + { + \PHPUnit\Framework\Assert::assertObjectHasProperty(...func_get_args()); + } +} +if (!function_exists('PHPUnit\\Framework\\assertObjectNotHasProperty')) { + /** + * Asserts that an object does not have a specified property. + * + * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * @throws Exception + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + * + * @see Assert::assertObjectNotHasProperty + */ + function assertObjectNotHasProperty(string $attributeName, object $object, string $message = '') : void + { + \PHPUnit\Framework\Assert::assertObjectNotHasProperty(...func_get_args()); + } +} if (!function_exists('PHPUnit\\Framework\\assertSame')) { /** * Asserts that two variables have the same type and value. @@ -52464,9 +53239,8 @@ abstract class Constraint implements Countable, SelfDescribing /** * Throws an exception for the given compared value and test description. * - * @param mixed $other evaluated value or object - * @param string $description Additional information about the test - * @param ComparisonFailure $comparisonFailure + * @param mixed $other evaluated value or object + * @param string $description Additional information about the test * * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException @@ -52681,8 +53455,6 @@ final class IsEqual extends \PHPUnit\Framework\Constraint\Constraint * failure. * * @throws ExpectationFailedException - * - * @return bool */ public function evaluate($other, string $description = '', bool $returnResult = \false) : ?bool { @@ -52961,7 +53733,7 @@ final class IsEqualWithDelta extends \PHPUnit\Framework\Constraint\Constraint */ public function toString() : string { - return sprintf('is equal to %s with delta <%F>>', $this->exporter()->export($this->value), $this->delta); + return sprintf('is equal to %s with delta <%F>', $this->exporter()->export($this->value), $this->delta); } } propertyName = $propertyName; + } + /** + * Returns a string representation of the constraint. + */ + public function toString() : string + { + return sprintf('has property "%s"', $this->propertyName); + } + /** + * Evaluates the constraint for parameter $other. Returns true if the + * constraint is met, false otherwise. + * + * @param mixed $other value or object to evaluate + */ + protected function matches($other) : bool + { + if (!is_object($other)) { + return \false; + } + return (new ReflectionObject($other))->hasProperty($this->propertyName); + } + /** + * Returns the description of the failure. + * + * The beginning of failure messages is "Failed asserting that" in most + * cases. This method should return the second part of that sentence. + * + * @param mixed $other evaluated value or object + */ + protected function failureDescription($other) : string + { + if (is_object($other)) { + return sprintf('object of class "%s" %s', get_class($other), $this->toString()); + } + return sprintf('"%s" (%s) %s', $other, gettype($other), $this->toString()); + } +} + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\Framework\Constraint; + use function array_map; use function array_values; use function count; @@ -54948,7 +55792,6 @@ declare (strict_types=1); */ namespace PHPUnit\Framework\Constraint; -use function strlen; use function strpos; use PHPUnit\Framework\InvalidArgumentException; /** @@ -54962,7 +55805,7 @@ final class StringStartsWith extends \PHPUnit\Framework\Constraint\Constraint private $prefix; public function __construct(string $prefix) { - if (strlen($prefix) === 0) { + if ($prefix === '') { throw InvalidArgumentException::create(1, 'non-empty string'); } $this->prefix = $prefix; @@ -55701,15 +56544,15 @@ namespace PHPUnit\Framework; final class ErrorTestCase extends \PHPUnit\Framework\TestCase { /** - * @var bool + * @var ?bool */ protected $backupGlobals = \false; /** - * @var bool + * @var ?bool */ protected $backupStaticAttributes = \false; /** - * @var bool + * @var ?bool */ protected $runTestInSeparateProcess = \false; /** @@ -56796,15 +57639,15 @@ namespace PHPUnit\Framework; final class IncompleteTestCase extends \PHPUnit\Framework\TestCase { /** - * @var bool + * @var ?bool */ protected $backupGlobals = \false; /** - * @var bool + * @var ?bool */ protected $backupStaticAttributes = \false; /** - * @var bool + * @var ?bool */ protected $runTestInSeparateProcess = \false; /** @@ -57155,6 +57998,8 @@ final class InvocationMocker implements \PHPUnit\Framework\MockObject\Builder\In * @throws MethodParametersAlreadyConfiguredException * * @return $this + * + * @deprecated */ public function withConsecutive(...$arguments) : self { @@ -60501,6 +61346,8 @@ use PHPUnit\Framework\InvalidParameterGroupException; use PHPUnit\Framework\MockObject\Invocation as BaseInvocation; /** * @internal This class is not covered by the backward compatibility promise for PHPUnit + * + * @deprecated */ final class ConsecutiveParameters implements \PHPUnit\Framework\MockObject\Rule\ParametersRule { @@ -61640,15 +62487,15 @@ namespace PHPUnit\Framework; final class SkippedTestCase extends \PHPUnit\Framework\TestCase { /** - * @var bool + * @var ?bool */ protected $backupGlobals = \false; /** - * @var bool + * @var ?bool */ protected $backupStaticAttributes = \false; /** - * @var bool + * @var ?bool */ protected $runTestInSeparateProcess = \false; /** @@ -61896,6 +62743,8 @@ use function setlocale; use function sprintf; use function strpos; use function substr; +use function sys_get_temp_dir; +use function tempnam; use function trim; use function var_export; use PHPUnit\DeepCopy\DeepCopy; @@ -61970,7 +62819,7 @@ abstract class TestCase extends \PHPUnit\Framework\Assert implements \PHPUnit\Fr */ protected $backupGlobalsBlacklist = []; /** - * @var bool + * @var ?bool */ protected $backupStaticAttributes; /** @@ -61984,7 +62833,7 @@ abstract class TestCase extends \PHPUnit\Framework\Assert implements \PHPUnit\Fr */ protected $backupStaticAttributesBlacklist = []; /** - * @var bool + * @var ?bool */ protected $runTestInSeparateProcess; /** @@ -61996,7 +62845,7 @@ abstract class TestCase extends \PHPUnit\Framework\Assert implements \PHPUnit\Fr */ protected $providedTests = []; /** - * @var bool + * @var ?bool */ private $runClassInSeparateProcess; /** @@ -62341,16 +63190,16 @@ abstract class TestCase extends \PHPUnit\Framework\Assert implements \PHPUnit\Fr // @codeCoverageIgnoreStart switch ($exception) { case Deprecated::class: - $this->addWarning('Support for using expectException() with PHPUnit\\Framework\\Error\\Deprecated is deprecated and will be removed in PHPUnit 10. Use expectDeprecation() instead.'); + $this->addWarning('Expecting E_DEPRECATED and E_USER_DEPRECATED is deprecated and will no longer be possible in PHPUnit 10.'); break; case Error::class: - $this->addWarning('Support for using expectException() with PHPUnit\\Framework\\Error\\Error is deprecated and will be removed in PHPUnit 10. Use expectError() instead.'); + $this->addWarning('Expecting E_ERROR and E_USER_ERROR is deprecated and will no longer be possible in PHPUnit 10.'); break; case Notice::class: - $this->addWarning('Support for using expectException() with PHPUnit\\Framework\\Error\\Notice is deprecated and will be removed in PHPUnit 10. Use expectNotice() instead.'); + $this->addWarning('Expecting E_STRICT, E_NOTICE, and E_USER_NOTICE is deprecated and will no longer be possible in PHPUnit 10.'); break; case WarningError::class: - $this->addWarning('Support for using expectException() with PHPUnit\\Framework\\Error\\Warning is deprecated and will be removed in PHPUnit 10. Use expectWarning() instead.'); + $this->addWarning('Expecting E_WARNING and E_USER_WARNING is deprecated and will no longer be possible in PHPUnit 10.'); break; } // @codeCoverageIgnoreEnd @@ -62386,52 +63235,100 @@ abstract class TestCase extends \PHPUnit\Framework\Assert implements \PHPUnit\Fr { $this->doesNotPerformAssertions = \true; } + /** + * @deprecated https://github.com/sebastianbergmann/phpunit/issues/5062 + */ public function expectDeprecation() : void { + $this->addWarning('Expecting E_DEPRECATED and E_USER_DEPRECATED is deprecated and will no longer be possible in PHPUnit 10.'); $this->expectedException = Deprecated::class; } + /** + * @deprecated https://github.com/sebastianbergmann/phpunit/issues/5062 + */ public function expectDeprecationMessage(string $message) : void { + $this->addWarning('Expecting E_DEPRECATED and E_USER_DEPRECATED is deprecated and will no longer be possible in PHPUnit 10.'); $this->expectExceptionMessage($message); } + /** + * @deprecated https://github.com/sebastianbergmann/phpunit/issues/5062 + */ public function expectDeprecationMessageMatches(string $regularExpression) : void { + $this->addWarning('Expecting E_DEPRECATED and E_USER_DEPRECATED is deprecated and will no longer be possible in PHPUnit 10.'); $this->expectExceptionMessageMatches($regularExpression); } + /** + * @deprecated https://github.com/sebastianbergmann/phpunit/issues/5062 + */ public function expectNotice() : void { + $this->addWarning('Expecting E_STRICT, E_NOTICE, and E_USER_NOTICE is deprecated and will no longer be possible in PHPUnit 10.'); $this->expectedException = Notice::class; } + /** + * @deprecated https://github.com/sebastianbergmann/phpunit/issues/5062 + */ public function expectNoticeMessage(string $message) : void { + $this->addWarning('Expecting E_STRICT, E_NOTICE, and E_USER_NOTICE is deprecated and will no longer be possible in PHPUnit 10.'); $this->expectExceptionMessage($message); } + /** + * @deprecated https://github.com/sebastianbergmann/phpunit/issues/5062 + */ public function expectNoticeMessageMatches(string $regularExpression) : void { + $this->addWarning('Expecting E_STRICT, E_NOTICE, and E_USER_NOTICE is deprecated and will no longer be possible in PHPUnit 10.'); $this->expectExceptionMessageMatches($regularExpression); } + /** + * @deprecated https://github.com/sebastianbergmann/phpunit/issues/5062 + */ public function expectWarning() : void { + $this->addWarning('Expecting E_WARNING and E_USER_WARNING is deprecated and will no longer be possible in PHPUnit 10.'); $this->expectedException = WarningError::class; } + /** + * @deprecated https://github.com/sebastianbergmann/phpunit/issues/5062 + */ public function expectWarningMessage(string $message) : void { + $this->addWarning('Expecting E_WARNING and E_USER_WARNING is deprecated and will no longer be possible in PHPUnit 10.'); $this->expectExceptionMessage($message); } + /** + * @deprecated https://github.com/sebastianbergmann/phpunit/issues/5062 + */ public function expectWarningMessageMatches(string $regularExpression) : void { + $this->addWarning('Expecting E_WARNING and E_USER_WARNING is deprecated and will no longer be possible in PHPUnit 10.'); $this->expectExceptionMessageMatches($regularExpression); } + /** + * @deprecated https://github.com/sebastianbergmann/phpunit/issues/5062 + */ public function expectError() : void { + $this->addWarning('Expecting E_ERROR and E_USER_ERROR is deprecated and will no longer be possible in PHPUnit 10.'); $this->expectedException = Error::class; } + /** + * @deprecated https://github.com/sebastianbergmann/phpunit/issues/5062 + */ public function expectErrorMessage(string $message) : void { + $this->addWarning('Expecting E_ERROR and E_USER_ERROR is deprecated and will no longer be possible in PHPUnit 10.'); $this->expectExceptionMessage($message); } + /** + * @deprecated https://github.com/sebastianbergmann/phpunit/issues/5062 + */ public function expectErrorMessageMatches(string $regularExpression) : void { + $this->addWarning('Expecting E_ERROR and E_USER_ERROR is deprecated and will no longer be possible in PHPUnit 10.'); $this->expectExceptionMessageMatches($regularExpression); } public function getStatus() : int @@ -62507,13 +63404,13 @@ abstract class TestCase extends \PHPUnit\Framework\Assert implements \PHPUnit\Fr $enforcesTimeLimit = $result->enforcesTimeLimit() ? 'true' : 'false'; $isStrictAboutTodoAnnotatedTests = $result->isStrictAboutTodoAnnotatedTests() ? 'true' : 'false'; $isStrictAboutResourceUsageDuringSmallTests = $result->isStrictAboutResourceUsageDuringSmallTests() ? 'true' : 'false'; - if (defined('PHPUnit\\PHPUNIT_COMPOSER_INSTALL')) { + if (defined('PHPUNIT_COMPOSER_INSTALL')) { $composerAutoload = var_export(PHPUNIT_COMPOSER_INSTALL, \true); } else { $composerAutoload = '\'\''; } if (defined('__PHPUNIT_PHAR__')) { - $phar = var_export(\__PHPUNIT_PHAR__, \true); + $phar = var_export(__PHPUNIT_PHAR__, \true); } else { $phar = '\'\''; } @@ -62547,13 +63444,14 @@ abstract class TestCase extends \PHPUnit\Framework\Assert implements \PHPUnit\Fr $codeCoverageFilter = "'." . $codeCoverageFilter . ".'"; $codeCoverageCacheDirectory = "'." . $codeCoverageCacheDirectory . ".'"; $configurationFilePath = $GLOBALS['__PHPUNIT_CONFIGURATION_FILE'] ?? ''; - $var = ['composerAutoload' => $composerAutoload, 'phar' => $phar, 'filename' => $class->getFileName(), 'className' => $class->getName(), 'collectCodeCoverageInformation' => $coverage, 'cachesStaticAnalysis' => $cachesStaticAnalysis, 'codeCoverageCacheDirectory' => $codeCoverageCacheDirectory, 'driverMethod' => $driverMethod, 'data' => $data, 'dataName' => $dataName, 'dependencyInput' => $dependencyInput, 'constants' => $constants, 'globals' => $globals, 'include_path' => $includePath, 'included_files' => $includedFiles, 'iniSettings' => $iniSettings, 'isStrictAboutTestsThatDoNotTestAnything' => $isStrictAboutTestsThatDoNotTestAnything, 'isStrictAboutOutputDuringTests' => $isStrictAboutOutputDuringTests, 'enforcesTimeLimit' => $enforcesTimeLimit, 'isStrictAboutTodoAnnotatedTests' => $isStrictAboutTodoAnnotatedTests, 'isStrictAboutResourceUsageDuringSmallTests' => $isStrictAboutResourceUsageDuringSmallTests, 'codeCoverageFilter' => $codeCoverageFilter, 'configurationFilePath' => $configurationFilePath, 'name' => $this->getName(\false)]; + $processResultFile = tempnam(sys_get_temp_dir(), 'phpunit_'); + $var = ['composerAutoload' => $composerAutoload, 'phar' => $phar, 'filename' => $class->getFileName(), 'className' => $class->getName(), 'collectCodeCoverageInformation' => $coverage, 'cachesStaticAnalysis' => $cachesStaticAnalysis, 'codeCoverageCacheDirectory' => $codeCoverageCacheDirectory, 'driverMethod' => $driverMethod, 'data' => $data, 'dataName' => $dataName, 'dependencyInput' => $dependencyInput, 'constants' => $constants, 'globals' => $globals, 'include_path' => $includePath, 'included_files' => $includedFiles, 'iniSettings' => $iniSettings, 'isStrictAboutTestsThatDoNotTestAnything' => $isStrictAboutTestsThatDoNotTestAnything, 'isStrictAboutOutputDuringTests' => $isStrictAboutOutputDuringTests, 'enforcesTimeLimit' => $enforcesTimeLimit, 'isStrictAboutTodoAnnotatedTests' => $isStrictAboutTodoAnnotatedTests, 'isStrictAboutResourceUsageDuringSmallTests' => $isStrictAboutResourceUsageDuringSmallTests, 'codeCoverageFilter' => $codeCoverageFilter, 'configurationFilePath' => $configurationFilePath, 'name' => $this->getName(\false), 'processResultFile' => $processResultFile]; if (!$runEntireClass) { $var['methodName'] = $this->name; } $template->setVar($var); $php = AbstractPhpProcess::factory(); - $php->runTestJob($template->render(), $this, $result); + $php->runTestJob($template->render(), $this, $result, $processResultFile); } else { $result->run($this); } @@ -63269,9 +64167,12 @@ abstract class TestCase extends \PHPUnit\Framework\Assert implements \PHPUnit\Fr * @psalm-param class-string|string $originalClassName * * @psalm-return class-string + * + * @deprecated */ protected function getMockClass(string $originalClassName, $methods = [], array $arguments = [], string $mockClassName = '', bool $callOriginalConstructor = \false, bool $callOriginalClone = \true, bool $callAutoload = \true, bool $cloneArguments = \false) : string { + $this->addWarning('PHPUnit\\Framework\\TestCase::getMockClass() is deprecated and will be removed in PHPUnit 10.'); $this->recordDoubledType($originalClassName); $mock = $this->getMockObjectGenerator()->getMock($originalClassName, $methods, $arguments, $mockClassName, $callOriginalConstructor, $callOriginalClone, $callAutoload, $cloneArguments); return get_class($mock); @@ -63584,7 +64485,7 @@ abstract class TestCase extends \PHPUnit\Framework\Assert implements \PHPUnit\Fr $excludeList->addGlobalVariable($globalVariable); } } - if (!defined('PHPUnit\\PHPUNIT_TESTSUITE')) { + if (!defined('PHPUNIT_TESTSUITE')) { $excludeList->addClassNamePrefix('PHPUnit'); $excludeList->addClassNamePrefix('PHPUnit\\SebastianBergmann\\CodeCoverage'); $excludeList->addClassNamePrefix('PHPUnit\\SebastianBergmann\\FileIterator'); @@ -64629,7 +65530,7 @@ final class TestResult implements Countable } } } - if ($this->beStrictAboutTestsThatDoNotTestAnything && $test->getNumAssertions() === 0) { + if ($this->beStrictAboutTestsThatDoNotTestAnything && !$test->doesNotPerformAssertions() && $test->getNumAssertions() === 0) { $risky = \true; } if ($this->forceCoversAnnotation && !$error && !$failure && !$warning && !$incomplete && !$skipped && !$risky) { @@ -65345,6 +66246,9 @@ class TestSuite implements IteratorAggregate, \PHPUnit\Framework\Reorderable, \P if (dirname($class->getFileName()) === __DIR__) { continue; } + if ($class->isAbstract() && $class->isSubclassOf(\PHPUnit\Framework\TestCase::class)) { + $this->addWarning(sprintf('Abstract test case classes with "Test" suffix are deprecated (%s)', $class->getName())); + } if (!$class->isAbstract()) { if ($class->hasMethod(BaseTestRunner::SUITE_METHODNAME)) { try { @@ -65461,7 +66365,7 @@ class TestSuite implements IteratorAggregate, \PHPUnit\Framework\Reorderable, \P call_user_func([$this->name, $beforeClassMethod]); } } - } catch (\PHPUnit\Framework\SkippedTestSuiteError $error) { + } catch (\PHPUnit\Framework\SkippedTestError|\PHPUnit\Framework\SkippedTestSuiteError $error) { foreach ($this->tests() as $test) { $result->startTest($test); $result->addFailure($test, $error, 0); @@ -65783,15 +66687,15 @@ namespace PHPUnit\Framework; final class WarningTestCase extends \PHPUnit\Framework\TestCase { /** - * @var bool + * @var ?bool */ protected $backupGlobals = \false; /** - * @var bool + * @var ?bool */ protected $backupStaticAttributes = \false; /** - * @var bool + * @var ?bool */ protected $runTestInSeparateProcess = \false; /** @@ -66188,7 +67092,11 @@ declare (strict_types=1); */ namespace PHPUnit\Runner\Extension; +use function count; +use function explode; +use function implode; use function is_file; +use function strpos; use PHPUnit\PharIo\Manifest\ApplicationName; use PHPUnit\PharIo\Manifest\Exception as ManifestException; use PHPUnit\PharIo\Manifest\ManifestLoader; @@ -66214,7 +67122,7 @@ final class PharLoader } try { $applicationName = new ApplicationName('phpunit/phpunit'); - $version = new PharIoVersion(Version::series()); + $version = new PharIoVersion($this->phpunitVersion()); $manifest = ManifestLoader::fromFile('phar://' . $file . '/manifest.xml'); if (!$manifest->isExtensionFor($applicationName)) { $notLoadedExtensions[] = $file . ' is not an extension for PHPUnit'; @@ -66238,6 +67146,18 @@ final class PharLoader } return ['loadedExtensions' => $loadedExtensions, 'notLoadedExtensions' => $notLoadedExtensions]; } + private function phpunitVersion() : string + { + $version = Version::id(); + if (strpos($version, '-') === \false) { + return $version; + } + $parts = explode('.', explode('-', $version)[0]); + if (count($parts) === 2) { + $parts[] = 0; + } + return implode('.', $parts); + } } getCoverageFiles(); $template = new Template(__DIR__ . '/../Util/PHP/Template/PhptTestCase.tpl'); $composerAutoload = '\'\''; - if (defined('PHPUnit\\PHPUNIT_COMPOSER_INSTALL')) { + if (defined('PHPUNIT_COMPOSER_INSTALL')) { $composerAutoload = var_export(PHPUNIT_COMPOSER_INSTALL, \true); } $phar = '\'\''; if (defined('__PHPUNIT_PHAR__')) { - $phar = var_export(\__PHPUNIT_PHAR__, \true); + $phar = var_export(__PHPUNIT_PHAR__, \true); } $globals = ''; if (!empty($GLOBALS['__PHPUNIT_BOOTSTRAP'])) { @@ -67717,7 +68637,7 @@ final class StandardTestSuiteLoader implements \PHPUnit\Runner\TestSuiteLoader FileLoader::checkAndLoad($suiteClassFile); $loadedClasses = array_values(array_diff(get_declared_classes(), $loadedClasses)); if (empty($loadedClasses)) { - throw $this->exceptionFor($suiteClassName, $suiteClassFile); + throw new \PHPUnit\Runner\Exception(sprintf('Class %s could not be found in %s', $suiteClassName, $suiteClassFile)); } } if (!class_exists($suiteClassName, \false)) { @@ -67731,7 +68651,7 @@ final class StandardTestSuiteLoader implements \PHPUnit\Runner\TestSuiteLoader } } if (!class_exists($suiteClassName, \false)) { - throw $this->exceptionFor($suiteClassName, $suiteClassFile); + throw new \PHPUnit\Runner\Exception(sprintf('Class %s could not be found in %s', $suiteClassName, $suiteClassFile)); } try { $class = new ReflectionClass($suiteClassName); @@ -67740,7 +68660,10 @@ final class StandardTestSuiteLoader implements \PHPUnit\Runner\TestSuiteLoader throw new \PHPUnit\Runner\Exception($e->getMessage(), $e->getCode(), $e); } // @codeCoverageIgnoreEnd - if ($class->isSubclassOf(TestCase::class) && !$class->isAbstract()) { + if ($class->isSubclassOf(TestCase::class)) { + if ($class->isAbstract()) { + throw new \PHPUnit\Runner\Exception(sprintf('Class %s declared in %s is abstract', $suiteClassName, $suiteClassFile)); + } return $class; } if ($class->hasMethod('suite')) { @@ -67748,23 +68671,21 @@ final class StandardTestSuiteLoader implements \PHPUnit\Runner\TestSuiteLoader $method = $class->getMethod('suite'); // @codeCoverageIgnoreStart } catch (ReflectionException $e) { - throw new \PHPUnit\Runner\Exception($e->getMessage(), $e->getCode(), $e); + throw new \PHPUnit\Runner\Exception(sprintf('Method %s::suite() declared in %s is abstract', $suiteClassName, $suiteClassFile)); } - // @codeCoverageIgnoreEnd - if (!$method->isAbstract() && $method->isPublic() && $method->isStatic()) { - return $class; + if (!$method->isPublic()) { + throw new \PHPUnit\Runner\Exception(sprintf('Method %s::suite() declared in %s is not public', $suiteClassName, $suiteClassFile)); + } + if (!$method->isStatic()) { + throw new \PHPUnit\Runner\Exception(sprintf('Method %s::suite() declared in %s is not static', $suiteClassName, $suiteClassFile)); } } - throw $this->exceptionFor($suiteClassName, $suiteClassFile); + return $class; } public function reload(ReflectionClass $aClass) : ReflectionClass { return $aClass; } - private function exceptionFor(string $className, string $filename) : \PHPUnit\Runner\Exception - { - return new \PHPUnit\Runner\Exception(sprintf("Class '%s' could not be found in '%s'.", $className, $filename)); - } } getVersion(); + self::$version = (new VersionId('9.6.13', dirname(__DIR__, 2)))->getVersion(); } return self::$version; } @@ -71126,7 +72047,11 @@ class Command if ($t instanceof \PHPUnit\Exception) { $this->exitWithErrorMessage($t->getMessage()); } - $this->exitWithErrorMessage(sprintf('Error in bootstrap script: %s:%s%s%s%s', get_class($t), PHP_EOL, $t->getMessage(), PHP_EOL, $t->getTraceAsString())); + $message = sprintf('Error in bootstrap script: %s:%s%s%s%s', get_class($t), PHP_EOL, $t->getMessage(), PHP_EOL, $t->getTraceAsString()); + while ($t = $t->getPrevious()) { + $message .= sprintf('%s%sPrevious error: %s:%s%s%s%s', PHP_EOL, PHP_EOL, get_class($t), PHP_EOL, $t->getMessage(), PHP_EOL, $t->getTraceAsString()); + } + $this->exitWithErrorMessage($message); } } protected function handleVersionCheck() : void @@ -71210,7 +72135,7 @@ class Command private function handleListTests(TestSuite $suite, bool $exit) : int { $this->printVersionString(); - $this->warnAboutConflictingOptions('listTests', ['filter', 'groups', 'excludeGroups', 'testsuite']); + $this->warnAboutConflictingOptions('listTests', ['filter', 'groups', 'excludeGroups']); $renderer = new TextTestListRenderer(); print $renderer->render($suite); if ($exit) { @@ -71224,7 +72149,7 @@ class Command private function handleListTestsXml(TestSuite $suite, string $target, bool $exit) : int { $this->printVersionString(); - $this->warnAboutConflictingOptions('listTestsXml', ['filter', 'groups', 'excludeGroups', 'testsuite']); + $this->warnAboutConflictingOptions('listTestsXml', ['filter', 'groups', 'excludeGroups']); $renderer = new XmlTestListRenderer(); file_put_contents($target, $renderer->render($suite)); printf('Wrote list of tests that would have been run to %s' . PHP_EOL, $target); @@ -72097,6 +73022,7 @@ use function is_string; use function mt_srand; use function range; use function realpath; +use function sort; use function sprintf; use function time; use PHPUnit\Framework\Exception; @@ -72488,6 +73414,8 @@ final class TestRunner extends BaseTestRunner if (isset($arguments['conflictBetweenPrinterClassAndTestdox'])) { $warnings[] = 'Directives printerClass and testdox are mutually exclusive'; } + $warnings = array_merge($warnings, $suite->warnings()); + sort($warnings); foreach ($warnings as $warning) { $this->writeMessage('Warning', $warning); } @@ -72541,14 +73469,6 @@ final class TestRunner extends BaseTestRunner $extension->executeBeforeFirstTest(); } } - $testSuiteWarningsPrinted = \false; - foreach ($suite->warnings() as $warning) { - $this->writeMessage('Warning', $warning); - $testSuiteWarningsPrinted = \true; - } - if ($testSuiteWarningsPrinted) { - $this->write(PHP_EOL); - } $suite->run($result); foreach ($this->extensions as $extension) { if ($extension instanceof AfterLastTestHook) { @@ -72558,6 +73478,17 @@ final class TestRunner extends BaseTestRunner $result->flushListeners(); $this->printer->printResult($result); if (isset($codeCoverage)) { + if (isset($arguments['coveragePHP'])) { + $this->codeCoverageGenerationStart('PHP'); + try { + $writer = new PhpReport(); + $writer->process($codeCoverage, $arguments['coveragePHP']); + $this->codeCoverageGenerationSucceeded(); + unset($writer); + } catch (CodeCoverageException $e) { + $this->codeCoverageGenerationFailed($e); + } + } if (isset($arguments['coverageClover'])) { $this->codeCoverageGenerationStart('Clover XML'); try { @@ -72602,17 +73533,6 @@ final class TestRunner extends BaseTestRunner $this->codeCoverageGenerationFailed($e); } } - if (isset($arguments['coveragePHP'])) { - $this->codeCoverageGenerationStart('PHP'); - try { - $writer = new PhpReport(); - $writer->process($codeCoverage, $arguments['coveragePHP']); - $this->codeCoverageGenerationSucceeded(); - unset($writer); - } catch (CodeCoverageException $e) { - $this->codeCoverageGenerationFailed($e); - } - } if (isset($arguments['coverageText'])) { if ($arguments['coverageText'] === 'php://stdout') { $outputStream = $this->printer; @@ -72819,14 +73739,16 @@ final class TestRunner extends BaseTestRunner if (!isset($arguments['excludeGroups']) && $groupConfiguration->hasExclude()) { $arguments['excludeGroups'] = array_diff($groupConfiguration->exclude()->asArrayOfStrings(), $groupCliArgs); } - $extensionHandler = new ExtensionHandler(); - foreach ($arguments['configurationObject']->extensions() as $extension) { - $extensionHandler->registerExtension($extension, $this); - } - foreach ($arguments['configurationObject']->listeners() as $listener) { - $arguments['listeners'][] = $extensionHandler->createTestListenerInstance($listener); + if (!isset($this->arguments['noExtensions'])) { + $extensionHandler = new ExtensionHandler(); + foreach ($arguments['configurationObject']->extensions() as $extension) { + $extensionHandler->registerExtension($extension, $this); + } + foreach ($arguments['configurationObject']->listeners() as $listener) { + $arguments['listeners'][] = $extensionHandler->createTestListenerInstance($listener); + } + unset($extensionHandler); } - unset($extensionHandler); foreach ($arguments['unavailableExtensions'] as $extension) { $arguments['warnings'][] = sprintf('Extension "%s" is not available', $extension); } @@ -75601,7 +76523,7 @@ use function version_compare; */ final class MigrationBuilder { - private const AVAILABLE_MIGRATIONS = ['8.5' => [\PHPUnit\TextUI\XmlConfiguration\RemoveLogTypes::class], '9.2' => [\PHPUnit\TextUI\XmlConfiguration\RemoveCacheTokensAttribute::class, \PHPUnit\TextUI\XmlConfiguration\IntroduceCoverageElement::class, \PHPUnit\TextUI\XmlConfiguration\MoveAttributesFromRootToCoverage::class, \PHPUnit\TextUI\XmlConfiguration\MoveAttributesFromFilterWhitelistToCoverage::class, \PHPUnit\TextUI\XmlConfiguration\MoveWhitelistDirectoriesToCoverage::class, \PHPUnit\TextUI\XmlConfiguration\MoveWhitelistExcludesToCoverage::class, \PHPUnit\TextUI\XmlConfiguration\RemoveEmptyFilter::class, \PHPUnit\TextUI\XmlConfiguration\CoverageCloverToReport::class, \PHPUnit\TextUI\XmlConfiguration\CoverageCrap4jToReport::class, \PHPUnit\TextUI\XmlConfiguration\CoverageHtmlToReport::class, \PHPUnit\TextUI\XmlConfiguration\CoveragePhpToReport::class, \PHPUnit\TextUI\XmlConfiguration\CoverageTextToReport::class, \PHPUnit\TextUI\XmlConfiguration\CoverageXmlToReport::class, \PHPUnit\TextUI\XmlConfiguration\ConvertLogTypes::class, \PHPUnit\TextUI\XmlConfiguration\UpdateSchemaLocationTo93::class]]; + private const AVAILABLE_MIGRATIONS = ['8.5' => [\PHPUnit\TextUI\XmlConfiguration\RemoveLogTypes::class], '9.2' => [\PHPUnit\TextUI\XmlConfiguration\RemoveCacheTokensAttribute::class, \PHPUnit\TextUI\XmlConfiguration\IntroduceCoverageElement::class, \PHPUnit\TextUI\XmlConfiguration\MoveAttributesFromRootToCoverage::class, \PHPUnit\TextUI\XmlConfiguration\MoveAttributesFromFilterWhitelistToCoverage::class, \PHPUnit\TextUI\XmlConfiguration\MoveWhitelistIncludesToCoverage::class, \PHPUnit\TextUI\XmlConfiguration\MoveWhitelistExcludesToCoverage::class, \PHPUnit\TextUI\XmlConfiguration\RemoveEmptyFilter::class, \PHPUnit\TextUI\XmlConfiguration\CoverageCloverToReport::class, \PHPUnit\TextUI\XmlConfiguration\CoverageCrap4jToReport::class, \PHPUnit\TextUI\XmlConfiguration\CoverageHtmlToReport::class, \PHPUnit\TextUI\XmlConfiguration\CoveragePhpToReport::class, \PHPUnit\TextUI\XmlConfiguration\CoverageTextToReport::class, \PHPUnit\TextUI\XmlConfiguration\CoverageXmlToReport::class, \PHPUnit\TextUI\XmlConfiguration\ConvertLogTypes::class, \PHPUnit\TextUI\XmlConfiguration\UpdateSchemaLocationTo93::class]]; /** * @throws MigrationBuilderException */ @@ -76092,13 +77014,15 @@ declare (strict_types=1); */ namespace PHPUnit\TextUI\XmlConfiguration; +use function assert; +use function in_array; use DOMDocument; use DOMElement; use PHPUnit\Util\Xml\SnapshotNodeList; /** * @internal This class is not covered by the backward compatibility promise for PHPUnit */ -final class MoveWhitelistDirectoriesToCoverage implements \PHPUnit\TextUI\XmlConfiguration\Migration +final class MoveWhitelistExcludesToCoverage implements \PHPUnit\TextUI\XmlConfiguration\Migration { /** * @throws MigrationException @@ -76109,17 +77033,30 @@ final class MoveWhitelistDirectoriesToCoverage implements \PHPUnit\TextUI\XmlCon if ($whitelist === null) { return; } + $excludeNodes = SnapshotNodeList::fromNodeList($whitelist->getElementsByTagName('exclude')); + if ($excludeNodes->count() === 0) { + return; + } $coverage = $document->getElementsByTagName('coverage')->item(0); if (!$coverage instanceof DOMElement) { throw new \PHPUnit\TextUI\XmlConfiguration\MigrationException('Unexpected state - No coverage element'); } - $include = $document->createElement('include'); - $coverage->appendChild($include); - foreach (SnapshotNodeList::fromNodeList($whitelist->childNodes) as $child) { - if (!$child instanceof DOMElement || $child->nodeName !== 'directory') { - continue; + $targetExclude = $coverage->getElementsByTagName('exclude')->item(0); + if ($targetExclude === null) { + $targetExclude = $coverage->appendChild($document->createElement('exclude')); + } + foreach ($excludeNodes as $excludeNode) { + assert($excludeNode instanceof DOMElement); + foreach (SnapshotNodeList::fromNodeList($excludeNode->childNodes) as $child) { + if (!$child instanceof DOMElement || !in_array($child->nodeName, ['directory', 'file'], \true)) { + continue; + } + $targetExclude->appendChild($child); } - $include->appendChild($child); + if ($excludeNode->getElementsByTagName('*')->count() !== 0) { + throw new \PHPUnit\TextUI\XmlConfiguration\MigrationException('Dangling child elements in exclude found.'); + } + $whitelist->removeChild($excludeNode); } } } @@ -76136,15 +77073,13 @@ declare (strict_types=1); */ namespace PHPUnit\TextUI\XmlConfiguration; -use function assert; -use function in_array; use DOMDocument; use DOMElement; use PHPUnit\Util\Xml\SnapshotNodeList; /** * @internal This class is not covered by the backward compatibility promise for PHPUnit */ -final class MoveWhitelistExcludesToCoverage implements \PHPUnit\TextUI\XmlConfiguration\Migration +final class MoveWhitelistIncludesToCoverage implements \PHPUnit\TextUI\XmlConfiguration\Migration { /** * @throws MigrationException @@ -76155,30 +77090,20 @@ final class MoveWhitelistExcludesToCoverage implements \PHPUnit\TextUI\XmlConfig if ($whitelist === null) { return; } - $excludeNodes = SnapshotNodeList::fromNodeList($whitelist->getElementsByTagName('exclude')); - if ($excludeNodes->count() === 0) { - return; - } $coverage = $document->getElementsByTagName('coverage')->item(0); if (!$coverage instanceof DOMElement) { throw new \PHPUnit\TextUI\XmlConfiguration\MigrationException('Unexpected state - No coverage element'); } - $targetExclude = $coverage->getElementsByTagName('exclude')->item(0); - if ($targetExclude === null) { - $targetExclude = $coverage->appendChild($document->createElement('exclude')); - } - foreach ($excludeNodes as $excludeNode) { - assert($excludeNode instanceof DOMElement); - foreach (SnapshotNodeList::fromNodeList($excludeNode->childNodes) as $child) { - if (!$child instanceof DOMElement || !in_array($child->nodeName, ['directory', 'file'], \true)) { - continue; - } - $targetExclude->appendChild($child); + $include = $document->createElement('include'); + $coverage->appendChild($include); + foreach (SnapshotNodeList::fromNodeList($whitelist->childNodes) as $child) { + if (!$child instanceof DOMElement) { + continue; } - if ($excludeNode->getElementsByTagName('*')->count() !== 0) { - throw new \PHPUnit\TextUI\XmlConfiguration\MigrationException('Dangling child elements in exclude found.'); + if (!($child->nodeName === 'directory' || $child->nodeName === 'file')) { + continue; } - $whitelist->removeChild($excludeNode); + $include->appendChild($child); } } } @@ -78764,9 +79689,9 @@ final class DocBlock } private function cleanUpMultiLineAnnotation(string $docComment) : string { - //removing initial ' * ' for docComment + // removing initial ' * ' for docComment $docComment = str_replace("\r\n", "\n", $docComment); - $docComment = preg_replace('/' . '\\n' . '\\s*' . '\\*' . '\\s?' . '/', "\n", $docComment); + $docComment = preg_replace('/\\n\\s*\\*\\s?/', "\n", $docComment); $docComment = (string) substr($docComment, 0, -1); return rtrim($docComment, "\n"); } @@ -79225,12 +80150,8 @@ use PHPUnit\DeepCopy\DeepCopy; use PHPUnit\Doctrine\Instantiator\Instantiator; use PHPUnit\PharIo\Manifest\Manifest; use PHPUnit\PharIo\Version\Version as PharIoVersion; -use PHPUnit\phpDocumentor\Reflection\DocBlock; -use PHPUnit\phpDocumentor\Reflection\Project; -use PHPUnit\phpDocumentor\Reflection\Type; use PHPUnit\PhpParser\Parser; use PHPUnit\Framework\TestCase; -use Prophecy\Prophet; use ReflectionClass; use PHPUnit\SebastianBergmann\CliParser\Parser as CliParser; use PHPUnit\SebastianBergmann\CodeCoverage\CodeCoverage; @@ -79253,7 +80174,6 @@ use PHPUnit\SebastianBergmann\Timer\Timer; use PHPUnit\SebastianBergmann\Type\TypeName; use PHPUnit\SebastianBergmann\Version; use PHPUnit\TheSeer\Tokenizer\Tokenizer; -use PHPUnit\Webmozart\Assert\Assert; /** * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit */ @@ -79275,14 +80195,8 @@ final class ExcludeList Manifest::class => 1, // phar-io/version PharIoVersion::class => 1, - // phpdocumentor/reflection-common - Project::class => 1, - // phpdocumentor/reflection-docblock - DocBlock::class => 1, // phpdocumentor/type-resolver - Type::class => 1, - // phpspec/prophecy - Prophet::class => 1, + \PHPUnit\Util\Type::class => 1, // phpunit/phpunit TestCase::class => 2, // phpunit/php-code-coverage @@ -79327,8 +80241,6 @@ final class ExcludeList Version::class => 1, // theseer/tokenizer Tokenizer::class => 1, - // webmozart/assert - Assert::class => 1, ]; /** * @var string[] @@ -79360,7 +80272,7 @@ final class ExcludeList */ public function isExcluded(string $file) : bool { - if (defined('PHPUnit\\PHPUNIT_TESTSUITE')) { + if (defined('PHPUNIT_TESTSUITE')) { return \false; } $this->initialize(); @@ -79560,7 +80472,7 @@ final class Filter if (!self::frameExists($eTrace, $eFile, $eLine)) { array_unshift($eTrace, ['file' => $eFile, 'line' => $eLine]); } - $prefix = defined('__PHPUNIT_PHAR_ROOT__') ? \__PHPUNIT_PHAR_ROOT__ : \false; + $prefix = defined('__PHPUNIT_PHAR_ROOT__') ? __PHPUNIT_PHAR_ROOT__ : \false; $excludeList = new \PHPUnit\Util\ExcludeList(); foreach ($eTrace as $frame) { if (self::shouldPrintFrame($frame, $prefix, $excludeList)) { @@ -79611,6 +80523,8 @@ declare (strict_types=1); */ namespace PHPUnit\Util; +use const PHP_MAJOR_VERSION; +use const PHP_MINOR_VERSION; use function array_keys; use function array_reverse; use function array_shift; @@ -79639,6 +80553,10 @@ final class GlobalState * @var string[] */ private const SUPER_GLOBAL_ARRAYS = ['_ENV', '_POST', '_GET', '_COOKIE', '_SERVER', '_FILES', '_REQUEST']; + /** + * @psalm-var array> + */ + private const DEPRECATED_INI_SETTINGS = ['7.3' => ['iconv.input_encoding' => \true, 'iconv.output_encoding' => \true, 'iconv.internal_encoding' => \true, 'mbstring.func_overload' => \true, 'mbstring.http_input' => \true, 'mbstring.http_output' => \true, 'mbstring.internal_encoding' => \true, 'string.strip_tags' => \true], '7.4' => ['iconv.input_encoding' => \true, 'iconv.output_encoding' => \true, 'iconv.internal_encoding' => \true, 'mbstring.func_overload' => \true, 'mbstring.http_input' => \true, 'mbstring.http_output' => \true, 'mbstring.internal_encoding' => \true, 'pdo_odbc.db2_instance_name' => \true, 'string.strip_tags' => \true], '8.0' => ['iconv.input_encoding' => \true, 'iconv.output_encoding' => \true, 'iconv.internal_encoding' => \true, 'mbstring.http_input' => \true, 'mbstring.http_output' => \true, 'mbstring.internal_encoding' => \true], '8.1' => ['auto_detect_line_endings' => \true, 'filter.default' => \true, 'iconv.input_encoding' => \true, 'iconv.output_encoding' => \true, 'iconv.internal_encoding' => \true, 'mbstring.http_input' => \true, 'mbstring.http_output' => \true, 'mbstring.internal_encoding' => \true, 'oci8.old_oci_close_semantics' => \true], '8.2' => ['auto_detect_line_endings' => \true, 'filter.default' => \true, 'iconv.input_encoding' => \true, 'iconv.output_encoding' => \true, 'iconv.internal_encoding' => \true, 'mbstring.http_input' => \true, 'mbstring.http_output' => \true, 'mbstring.internal_encoding' => \true, 'oci8.old_oci_close_semantics' => \true], '8.3' => ['auto_detect_line_endings' => \true, 'filter.default' => \true, 'iconv.input_encoding' => \true, 'iconv.output_encoding' => \true, 'iconv.internal_encoding' => \true, 'mbstring.http_input' => \true, 'mbstring.http_output' => \true, 'mbstring.internal_encoding' => \true, 'oci8.old_oci_close_semantics' => \true]]; /** * @throws Exception */ @@ -79657,7 +80575,7 @@ final class GlobalState $prefix = \false; $result = ''; if (defined('__PHPUNIT_PHAR__')) { - $prefix = 'phar://' . \__PHPUNIT_PHAR__ . '/'; + $prefix = 'phar://' . __PHPUNIT_PHAR__ . '/'; } // Do not process bootstrap script array_shift($files); @@ -79686,6 +80604,9 @@ final class GlobalState { $result = ''; foreach (ini_get_all(null, \false) as $key => $value) { + if (self::isIniSettingDeprecated($key)) { + continue; + } $result .= sprintf('@ini_set(%s, %s);' . "\n", self::exportVariable($key), self::exportVariable((string) $value)); } return $result; @@ -79745,6 +80666,10 @@ final class GlobalState } return $result; } + private static function isIniSettingDeprecated(string $iniSetting) : bool + { + return isset(self::DEPRECATED_INI_SETTINGS[PHP_MAJOR_VERSION . '.' . PHP_MINOR_VERSION][$iniSetting]); + } } startTest($test); + $processResult = ''; $_result = $this->runJob($job); - $this->processChildResult($test, $result, $_result['stdout'], $_result['stderr']); + if (file_exists($processResultFile)) { + $processResult = file_get_contents($processResultFile); + @unlink($processResultFile); + } + $this->processChildResult($test, $result, $processResult, $_result['stderr']); } /** * Returns the command based into the configurations. @@ -81037,7 +81970,7 @@ function __phpunit_run_isolated_test() $test = new {className}('{name}', unserialize('{data}'), '{dataName}'); $test->setDependencyInput(unserialize('{dependencyInput}')); - $test->setInIsolation(TRUE); + $test->setInIsolation(true); ob_end_clean(); $test->run($result); @@ -81047,6 +81980,7 @@ function __phpunit_run_isolated_test() } ini_set('xdebug.scream', '0'); + @rewind(STDOUT); /* @ as not every STDOUT target stream is rewindable */ if ($stdout = @stream_get_contents(STDOUT)) { $output = $stdout . $output; @@ -81057,13 +81991,16 @@ function __phpunit_run_isolated_test() } } - print serialize( - [ - 'testResult' => $test->getResult(), - 'numAssertions' => $test->getNumAssertions(), - 'result' => $result, - 'output' => $output - ] + file_put_contents( + '{processResultFile}', + serialize( + [ + 'testResult' => $test->getResult(), + 'numAssertions' => $test->getNumAssertions(), + 'result' => $result, + 'output' => $output + ] + ) ); } @@ -81169,6 +82106,7 @@ function __phpunit_run_isolated_test() } ini_set('xdebug.scream', '0'); + @rewind(STDOUT); /* @ as not every STDOUT target stream is rewindable */ if ($stdout = @stream_get_contents(STDOUT)) { $output = $stdout . $output; @@ -81179,13 +82117,16 @@ function __phpunit_run_isolated_test() } } - print serialize( - [ - 'testResult' => $test->getResult(), - 'numAssertions' => $test->getNumAssertions(), - 'result' => $result, - 'output' => $output - ] + file_put_contents( + '{processResultFile}', + serialize( + [ + 'testResult' => $test->getResult(), + 'numAssertions' => $test->getNumAssertions(), + 'result' => $result, + 'output' => $output + ] + ) ); } @@ -81714,7 +82655,7 @@ final class Test /** * @psalm-param class-string $className */ - public static function parseTestMethodAnnotations(string $className, ?string $methodName = '') : array + public static function parseTestMethodAnnotations(string $className, ?string $methodName = null) : array { $registry = Registry::getInstance(); if ($methodName !== null) { @@ -82294,26 +83235,47 @@ final class HtmlResultPrinter extends \PHPUnit\Util\TestDox\ResultPrinter @@ -82324,7 +83286,7 @@ EOT; */ private const CLASS_HEADER = <<<'EOT' -

%s

+

%s

    EOT; @@ -82357,14 +83319,14 @@ EOT; */ protected function startClass(string $name) : void { - $this->write(sprintf(self::CLASS_HEADER, $name, $this->currentTestClassPrettified)); + $this->write(sprintf(self::CLASS_HEADER, $this->currentTestClassPrettified)); } /** * Handler for 'on test' event. */ protected function onTest(string $name, bool $success = \true) : void { - $this->write(sprintf("
  • %s %s
  • \n", $success ? '#555753' : '#ef2929', $success ? '✓' : '❌', $name)); + $this->write(sprintf("
  • %s
  • \n", $success ? 'success' : 'defect', $name)); } /** * Handler for 'end class' event. @@ -84075,7 +85037,7 @@ final class SchemaFinder private function path() : string { if (defined('__PHPUNIT_PHAR_ROOT__')) { - return \__PHPUNIT_PHAR_ROOT__ . '/'; + return __PHPUNIT_PHAR_ROOT__ . '/'; } return __DIR__ . '/../../../'; } @@ -84330,55 +85292,55 @@ final class XmlTestListRenderer } } - + phpunit phpunit - 9.5.27 + 9.6.13 The PHP Unit Testing framework. BSD-3-Clause - pkg:composer/phpunit/phpunit@9.5.27 + pkg:composer/phpunit/phpunit@9.6.13 doctrine instantiator - 1.4.1 + 1.5.0 A small, lightweight utility to instantiate objects in PHP without invoking their constructors MIT - pkg:composer/doctrine/instantiator@1.4.1 + pkg:composer/doctrine/instantiator@1.5.0 myclabs deep-copy - 1.11.0 + 1.11.1 Create deep copies (clones) of your objects MIT - pkg:composer/myclabs/deep-copy@1.11.0 + pkg:composer/myclabs/deep-copy@1.11.1 nikic php-parser - v4.15.2 + v4.17.1 A PHP parser written in PHP BSD-3-Clause - pkg:composer/nikic/php-parser@v4.15.2 + pkg:composer/nikic/php-parser@v4.17.1 phar-io @@ -84443,26 +85405,26 @@ final class XmlTestListRenderer phpspec prophecy - v1.16.0 + v1.17.0 Highly opinionated mocking framework for PHP 5.3+ MIT - pkg:composer/phpspec/prophecy@v1.16.0 + pkg:composer/phpspec/prophecy@v1.17.0 phpunit php-code-coverage - 9.2.19 + 9.2.29 Library that provides collection, processing, and rendering functionality for PHP code coverage information. BSD-3-Clause - pkg:composer/phpunit/php-code-coverage@9.2.19 + pkg:composer/phpunit/php-code-coverage@9.2.29 phpunit @@ -84575,26 +85537,26 @@ final class XmlTestListRenderer sebastian diff - 4.0.4 + 4.0.5 Diff implementation BSD-3-Clause - pkg:composer/sebastian/diff@4.0.4 + pkg:composer/sebastian/diff@4.0.5 sebastian environment - 5.1.4 + 5.1.5 Provides functionality to handle HHVM/PHP environments BSD-3-Clause - pkg:composer/sebastian/environment@5.1.4 + pkg:composer/sebastian/environment@5.1.5 sebastian @@ -84611,14 +85573,14 @@ final class XmlTestListRenderer sebastian global-state - 5.0.5 + 5.0.6 Snapshotting of global state BSD-3-Clause - pkg:composer/sebastian/global-state@5.0.5 + pkg:composer/sebastian/global-state@5.0.6 sebastian @@ -84659,14 +85621,14 @@ final class XmlTestListRenderer sebastian recursion-context - 4.0.4 + 4.0.5 Provides functionality to recursively process PHP variables BSD-3-Clause - pkg:composer/sebastian/recursion-context@4.0.4 + pkg:composer/sebastian/recursion-context@4.0.5 sebastian @@ -84683,14 +85645,14 @@ final class XmlTestListRenderer sebastian type - 3.2.0 + 3.2.1 Collection of value objects that represent the types of the PHP type system BSD-3-Clause - pkg:composer/sebastian/type@3.2.0 + pkg:composer/sebastian/type@3.2.1 sebastian @@ -89034,7 +89996,12 @@ final class MemoryEfficientLongestCommonSubsequenceCalculator implements Longest if ($from[$i] === $to[$j]) { $current[$j + 1] = $prev[$j] + 1; } else { - $current[$j + 1] = max($current[$j], $prev[$j + 1]); + // don't use max() to avoid function call overhead + if ($current[$j] > $prev[$j + 1]) { + $current[$j + 1] = $current[$j]; + } else { + $current[$j + 1] = $prev[$j + 1]; + } } } } @@ -89745,7 +90712,21 @@ final class TimeEfficientLongestCommonSubsequenceCalculator implements LongestCo for ($i = 1; $i <= $fromLength; ++$i) { for ($j = 1; $j <= $toLength; ++$j) { $o = $j * $width + $i; - $matrix[$o] = max($matrix[$o - 1], $matrix[$o - $width], $from[$i - 1] === $to[$j - 1] ? $matrix[$o - $width - 1] + 1 : 0); + // don't use max() to avoid function call overhead + $firstOrLast = $from[$i - 1] === $to[$j - 1] ? $matrix[$o - $width - 1] + 1 : 0; + if ($matrix[$o - 1] > $matrix[$o - $width]) { + if ($firstOrLast > $matrix[$o - 1]) { + $matrix[$o] = $firstOrLast; + } else { + $matrix[$o] = $matrix[$o - 1]; + } + } else { + if ($firstOrLast > $matrix[$o - $width]) { + $matrix[$o] = $firstOrLast; + } else { + $matrix[$o] = $matrix[$o - $width]; + } + } } } $i = $fromLength; @@ -89862,14 +90843,12 @@ final class Console public function isInteractive($fileDescriptor = self::STDOUT) : bool { if (is_resource($fileDescriptor)) { - // These functions require a descriptor that is a real resource, not a numeric ID of it if (function_exists('stream_isatty') && @stream_isatty($fileDescriptor)) { return \true; } - // Check if formatted mode is S_IFCHR - if (function_exists('fstat') && @stream_isatty($fileDescriptor)) { + if (function_exists('fstat')) { $stat = @fstat(STDOUT); - return $stat ? 020000 === ($stat['mode'] & 0170000) : \false; + return $stat && 020000 === ($stat['mode'] & 0170000); } return \false; } @@ -90178,7 +91157,7 @@ final class Runtime */ public function isHHVM() : bool { - return defined('PHPUnit\\HHVM_VERSION'); + return defined('HHVM_VERSION'); } /** * Returns true when the runtime used is PHP without the PHPDBG SAPI. @@ -90849,7 +91828,7 @@ class Restorer foreach ($staticAttributes as $name => $value) { $reflector = new ReflectionProperty($className, $name); $reflector->setAccessible(\true); - $reflector->setValue($value); + $reflector->setValue(null, $value); } } foreach ($newClasses as $className) { @@ -90867,7 +91846,7 @@ class Restorer continue; } $attribute->setAccessible(\true); - $attribute->setValue($defaults[$name]); + $attribute->setValue(null, $defaults[$name]); } } } @@ -91783,7 +92762,7 @@ class ObjectReflector declare (strict_types=1); /* - * This file is part of the Recursion Context package. + * This file is part of sebastian/recursion-context. * * (c) Sebastian Bergmann * @@ -91794,6 +92773,7 @@ namespace PHPUnit\SebastianBergmann\RecursionContext; use const PHP_INT_MAX; use const PHP_INT_MIN; +use function array_key_exists; use function array_pop; use function array_slice; use function count; @@ -91893,18 +92873,22 @@ final class Context } $key = count($this->arrays); $this->arrays[] =& $array; - if (!isset($array[PHP_INT_MAX]) && !isset($array[PHP_INT_MAX - 1])) { + if (!array_key_exists(PHP_INT_MAX, $array) && !array_key_exists(PHP_INT_MAX - 1, $array)) { $array[] = $key; $array[] = $this->objects; } else { /* cover the improbable case too */ + /* Note that array_slice (used in containsArray) will return the + * last two values added *not necessarily* the highest integer + * keys in the array, so the order of these writes to $array + * is important, but the actual keys used is not. */ do { $key = random_int(PHP_INT_MIN, PHP_INT_MAX); - } while (isset($array[$key])); + } while (array_key_exists($key, $array)); $array[$key] = $key; do { $key = random_int(PHP_INT_MIN, PHP_INT_MAX); - } while (isset($array[$key])); + } while (array_key_exists($key, $array)); $array[$key] = $this->objects; } return $key; @@ -91944,7 +92928,7 @@ final class Context declare (strict_types=1); /* - * This file is part of the Recursion Context package. + * This file is part of sebastian/recursion-context. * * (c) Sebastian Bergmann * @@ -91961,7 +92945,7 @@ interface Exception extends Throwable declare (strict_types=1); /* - * This file is part of the Recursion Context package. + * This file is part of sebastian/recursion-context. * * (c) Sebastian Bergmann * @@ -91975,7 +92959,7 @@ final class InvalidArgumentException extends \InvalidArgumentException implement } Recursion Context -Copyright (c) 2002-2020, Sebastian Bergmann . +Copyright (c) 2002-2022, Sebastian Bergmann . All rights reserved. Redistribution and use in source and binary forms, with or without @@ -92059,7 +93043,7 @@ final class ResourceOperations */ public static function getFunctions() : array { - return ['Directory::close', 'Directory::read', 'Directory::rewind', 'DirectoryIterator::openFile', 'FilesystemIterator::openFile', 'Gmagick::readimagefile', 'HttpResponse::getRequestBodyStream', 'HttpResponse::getStream', 'HttpResponse::setStream', 'Imagick::pingImageFile', 'Imagick::readImageFile', 'Imagick::writeImageFile', 'Imagick::writeImagesFile', 'MongoGridFSCursor::__construct', 'MongoGridFSFile::getResource', 'MysqlndUhConnection::stmtInit', 'MysqlndUhConnection::storeResult', 'MysqlndUhConnection::useResult', 'PDF_activate_item', 'PDF_add_launchlink', 'PDF_add_locallink', 'PDF_add_nameddest', 'PDF_add_note', 'PDF_add_pdflink', 'PDF_add_table_cell', 'PDF_add_textflow', 'PDF_add_thumbnail', 'PDF_add_weblink', 'PDF_arc', 'PDF_arcn', 'PDF_attach_file', 'PDF_begin_document', 'PDF_begin_font', 'PDF_begin_glyph', 'PDF_begin_item', 'PDF_begin_layer', 'PDF_begin_page', 'PDF_begin_page_ext', 'PDF_begin_pattern', 'PDF_begin_template', 'PDF_begin_template_ext', 'PDF_circle', 'PDF_clip', 'PDF_close', 'PDF_close_image', 'PDF_close_pdi', 'PDF_close_pdi_page', 'PDF_closepath', 'PDF_closepath_fill_stroke', 'PDF_closepath_stroke', 'PDF_concat', 'PDF_continue_text', 'PDF_create_3dview', 'PDF_create_action', 'PDF_create_annotation', 'PDF_create_bookmark', 'PDF_create_field', 'PDF_create_fieldgroup', 'PDF_create_gstate', 'PDF_create_pvf', 'PDF_create_textflow', 'PDF_curveto', 'PDF_define_layer', 'PDF_delete', 'PDF_delete_pvf', 'PDF_delete_table', 'PDF_delete_textflow', 'PDF_encoding_set_char', 'PDF_end_document', 'PDF_end_font', 'PDF_end_glyph', 'PDF_end_item', 'PDF_end_layer', 'PDF_end_page', 'PDF_end_page_ext', 'PDF_end_pattern', 'PDF_end_template', 'PDF_endpath', 'PDF_fill', 'PDF_fill_imageblock', 'PDF_fill_pdfblock', 'PDF_fill_stroke', 'PDF_fill_textblock', 'PDF_findfont', 'PDF_fit_image', 'PDF_fit_pdi_page', 'PDF_fit_table', 'PDF_fit_textflow', 'PDF_fit_textline', 'PDF_get_apiname', 'PDF_get_buffer', 'PDF_get_errmsg', 'PDF_get_errnum', 'PDF_get_parameter', 'PDF_get_pdi_parameter', 'PDF_get_pdi_value', 'PDF_get_value', 'PDF_info_font', 'PDF_info_matchbox', 'PDF_info_table', 'PDF_info_textflow', 'PDF_info_textline', 'PDF_initgraphics', 'PDF_lineto', 'PDF_load_3ddata', 'PDF_load_font', 'PDF_load_iccprofile', 'PDF_load_image', 'PDF_makespotcolor', 'PDF_moveto', 'PDF_new', 'PDF_open_ccitt', 'PDF_open_file', 'PDF_open_image', 'PDF_open_image_file', 'PDF_open_memory_image', 'PDF_open_pdi', 'PDF_open_pdi_document', 'PDF_open_pdi_page', 'PDF_pcos_get_number', 'PDF_pcos_get_stream', 'PDF_pcos_get_string', 'PDF_place_image', 'PDF_place_pdi_page', 'PDF_process_pdi', 'PDF_rect', 'PDF_restore', 'PDF_resume_page', 'PDF_rotate', 'PDF_save', 'PDF_scale', 'PDF_set_border_color', 'PDF_set_border_dash', 'PDF_set_border_style', 'PDF_set_gstate', 'PDF_set_info', 'PDF_set_layer_dependency', 'PDF_set_parameter', 'PDF_set_text_pos', 'PDF_set_value', 'PDF_setcolor', 'PDF_setdash', 'PDF_setdashpattern', 'PDF_setflat', 'PDF_setfont', 'PDF_setgray', 'PDF_setgray_fill', 'PDF_setgray_stroke', 'PDF_setlinecap', 'PDF_setlinejoin', 'PDF_setlinewidth', 'PDF_setmatrix', 'PDF_setmiterlimit', 'PDF_setrgbcolor', 'PDF_setrgbcolor_fill', 'PDF_setrgbcolor_stroke', 'PDF_shading', 'PDF_shading_pattern', 'PDF_shfill', 'PDF_show', 'PDF_show_boxed', 'PDF_show_xy', 'PDF_skew', 'PDF_stringwidth', 'PDF_stroke', 'PDF_suspend_page', 'PDF_translate', 'PDF_utf16_to_utf8', 'PDF_utf32_to_utf16', 'PDF_utf8_to_utf16', 'PDO::pgsqlLOBOpen', 'RarEntry::getStream', 'SQLite3::openBlob', 'SWFMovie::saveToFile', 'SplFileInfo::openFile', 'SplFileObject::openFile', 'SplTempFileObject::openFile', 'V8Js::compileString', 'V8Js::executeScript', 'Vtiful\\Kernel\\Excel::setColumn', 'Vtiful\\Kernel\\Excel::setRow', 'Vtiful\\Kernel\\Format::align', 'Vtiful\\Kernel\\Format::bold', 'Vtiful\\Kernel\\Format::italic', 'Vtiful\\Kernel\\Format::underline', 'XMLWriter::openMemory', 'XMLWriter::openURI', 'ZipArchive::getStream', 'Zookeeper::setLogStream', 'apc_bin_dumpfile', 'apc_bin_loadfile', 'bbcode_add_element', 'bbcode_add_smiley', 'bbcode_create', 'bbcode_destroy', 'bbcode_parse', 'bbcode_set_arg_parser', 'bbcode_set_flags', 'bcompiler_read', 'bcompiler_write_class', 'bcompiler_write_constant', 'bcompiler_write_exe_footer', 'bcompiler_write_file', 'bcompiler_write_footer', 'bcompiler_write_function', 'bcompiler_write_functions_from_file', 'bcompiler_write_header', 'bcompiler_write_included_filename', 'bzclose', 'bzerrno', 'bzerror', 'bzerrstr', 'bzflush', 'bzopen', 'bzread', 'bzwrite', 'cairo_surface_write_to_png', 'closedir', 'copy', 'crack_closedict', 'crack_opendict', 'cubrid_bind', 'cubrid_close_prepare', 'cubrid_close_request', 'cubrid_col_get', 'cubrid_col_size', 'cubrid_column_names', 'cubrid_column_types', 'cubrid_commit', 'cubrid_connect', 'cubrid_connect_with_url', 'cubrid_current_oid', 'cubrid_db_parameter', 'cubrid_disconnect', 'cubrid_drop', 'cubrid_fetch', 'cubrid_free_result', 'cubrid_get', 'cubrid_get_autocommit', 'cubrid_get_charset', 'cubrid_get_class_name', 'cubrid_get_db_parameter', 'cubrid_get_query_timeout', 'cubrid_get_server_info', 'cubrid_insert_id', 'cubrid_is_instance', 'cubrid_lob2_bind', 'cubrid_lob2_close', 'cubrid_lob2_export', 'cubrid_lob2_import', 'cubrid_lob2_new', 'cubrid_lob2_read', 'cubrid_lob2_seek', 'cubrid_lob2_seek64', 'cubrid_lob2_size', 'cubrid_lob2_size64', 'cubrid_lob2_tell', 'cubrid_lob2_tell64', 'cubrid_lob2_write', 'cubrid_lob_export', 'cubrid_lob_get', 'cubrid_lob_send', 'cubrid_lob_size', 'cubrid_lock_read', 'cubrid_lock_write', 'cubrid_move_cursor', 'cubrid_next_result', 'cubrid_num_cols', 'cubrid_num_rows', 'cubrid_pconnect', 'cubrid_pconnect_with_url', 'cubrid_prepare', 'cubrid_put', 'cubrid_query', 'cubrid_rollback', 'cubrid_schema', 'cubrid_seq_add', 'cubrid_seq_drop', 'cubrid_seq_insert', 'cubrid_seq_put', 'cubrid_set_add', 'cubrid_set_autocommit', 'cubrid_set_db_parameter', 'cubrid_set_drop', 'cubrid_set_query_timeout', 'cubrid_unbuffered_query', 'curl_close', 'curl_copy_handle', 'curl_errno', 'curl_error', 'curl_escape', 'curl_exec', 'curl_getinfo', 'curl_multi_add_handle', 'curl_multi_close', 'curl_multi_errno', 'curl_multi_exec', 'curl_multi_getcontent', 'curl_multi_info_read', 'curl_multi_remove_handle', 'curl_multi_select', 'curl_multi_setopt', 'curl_pause', 'curl_reset', 'curl_setopt', 'curl_setopt_array', 'curl_share_close', 'curl_share_errno', 'curl_share_init', 'curl_share_setopt', 'curl_unescape', 'cyrus_authenticate', 'cyrus_bind', 'cyrus_close', 'cyrus_connect', 'cyrus_query', 'cyrus_unbind', 'db2_autocommit', 'db2_bind_param', 'db2_client_info', 'db2_close', 'db2_column_privileges', 'db2_columns', 'db2_commit', 'db2_conn_error', 'db2_conn_errormsg', 'db2_connect', 'db2_cursor_type', 'db2_exec', 'db2_execute', 'db2_fetch_array', 'db2_fetch_assoc', 'db2_fetch_both', 'db2_fetch_object', 'db2_fetch_row', 'db2_field_display_size', 'db2_field_name', 'db2_field_num', 'db2_field_precision', 'db2_field_scale', 'db2_field_type', 'db2_field_width', 'db2_foreign_keys', 'db2_free_result', 'db2_free_stmt', 'db2_get_option', 'db2_last_insert_id', 'db2_lob_read', 'db2_next_result', 'db2_num_fields', 'db2_num_rows', 'db2_pclose', 'db2_pconnect', 'db2_prepare', 'db2_primary_keys', 'db2_procedure_columns', 'db2_procedures', 'db2_result', 'db2_rollback', 'db2_server_info', 'db2_set_option', 'db2_special_columns', 'db2_statistics', 'db2_stmt_error', 'db2_stmt_errormsg', 'db2_table_privileges', 'db2_tables', 'dba_close', 'dba_delete', 'dba_exists', 'dba_fetch', 'dba_firstkey', 'dba_insert', 'dba_nextkey', 'dba_open', 'dba_optimize', 'dba_popen', 'dba_replace', 'dba_sync', 'dbplus_add', 'dbplus_aql', 'dbplus_close', 'dbplus_curr', 'dbplus_find', 'dbplus_first', 'dbplus_flush', 'dbplus_freelock', 'dbplus_freerlocks', 'dbplus_getlock', 'dbplus_getunique', 'dbplus_info', 'dbplus_last', 'dbplus_lockrel', 'dbplus_next', 'dbplus_open', 'dbplus_prev', 'dbplus_rchperm', 'dbplus_rcreate', 'dbplus_rcrtexact', 'dbplus_rcrtlike', 'dbplus_restorepos', 'dbplus_rkeys', 'dbplus_ropen', 'dbplus_rquery', 'dbplus_rrename', 'dbplus_rsecindex', 'dbplus_runlink', 'dbplus_rzap', 'dbplus_savepos', 'dbplus_setindex', 'dbplus_setindexbynumber', 'dbplus_sql', 'dbplus_tremove', 'dbplus_undo', 'dbplus_undoprepare', 'dbplus_unlockrel', 'dbplus_unselect', 'dbplus_update', 'dbplus_xlockrel', 'dbplus_xunlockrel', 'deflate_add', 'dio_close', 'dio_fcntl', 'dio_open', 'dio_read', 'dio_seek', 'dio_stat', 'dio_tcsetattr', 'dio_truncate', 'dio_write', 'dir', 'eio_busy', 'eio_cancel', 'eio_chmod', 'eio_chown', 'eio_close', 'eio_custom', 'eio_dup2', 'eio_fallocate', 'eio_fchmod', 'eio_fchown', 'eio_fdatasync', 'eio_fstat', 'eio_fstatvfs', 'eio_fsync', 'eio_ftruncate', 'eio_futime', 'eio_get_last_error', 'eio_grp', 'eio_grp_add', 'eio_grp_cancel', 'eio_grp_limit', 'eio_link', 'eio_lstat', 'eio_mkdir', 'eio_mknod', 'eio_nop', 'eio_open', 'eio_read', 'eio_readahead', 'eio_readdir', 'eio_readlink', 'eio_realpath', 'eio_rename', 'eio_rmdir', 'eio_seek', 'eio_sendfile', 'eio_stat', 'eio_statvfs', 'eio_symlink', 'eio_sync', 'eio_sync_file_range', 'eio_syncfs', 'eio_truncate', 'eio_unlink', 'eio_utime', 'eio_write', 'enchant_broker_describe', 'enchant_broker_dict_exists', 'enchant_broker_free', 'enchant_broker_free_dict', 'enchant_broker_get_dict_path', 'enchant_broker_get_error', 'enchant_broker_init', 'enchant_broker_list_dicts', 'enchant_broker_request_dict', 'enchant_broker_request_pwl_dict', 'enchant_broker_set_dict_path', 'enchant_broker_set_ordering', 'enchant_dict_add_to_personal', 'enchant_dict_add_to_session', 'enchant_dict_check', 'enchant_dict_describe', 'enchant_dict_get_error', 'enchant_dict_is_in_session', 'enchant_dict_quick_check', 'enchant_dict_store_replacement', 'enchant_dict_suggest', 'event_add', 'event_base_free', 'event_base_loop', 'event_base_loopbreak', 'event_base_loopexit', 'event_base_new', 'event_base_priority_init', 'event_base_reinit', 'event_base_set', 'event_buffer_base_set', 'event_buffer_disable', 'event_buffer_enable', 'event_buffer_fd_set', 'event_buffer_free', 'event_buffer_new', 'event_buffer_priority_set', 'event_buffer_read', 'event_buffer_set_callback', 'event_buffer_timeout_set', 'event_buffer_watermark_set', 'event_buffer_write', 'event_del', 'event_free', 'event_new', 'event_priority_set', 'event_set', 'event_timer_add', 'event_timer_del', 'event_timer_pending', 'event_timer_set', 'expect_expectl', 'expect_popen', 'fam_cancel_monitor', 'fam_close', 'fam_monitor_collection', 'fam_monitor_directory', 'fam_monitor_file', 'fam_next_event', 'fam_open', 'fam_pending', 'fam_resume_monitor', 'fam_suspend_monitor', 'fann_cascadetrain_on_data', 'fann_cascadetrain_on_file', 'fann_clear_scaling_params', 'fann_copy', 'fann_create_from_file', 'fann_create_shortcut_array', 'fann_create_standard', 'fann_create_standard_array', 'fann_create_train', 'fann_create_train_from_callback', 'fann_descale_input', 'fann_descale_output', 'fann_descale_train', 'fann_destroy', 'fann_destroy_train', 'fann_duplicate_train_data', 'fann_get_MSE', 'fann_get_activation_function', 'fann_get_activation_steepness', 'fann_get_bias_array', 'fann_get_bit_fail', 'fann_get_bit_fail_limit', 'fann_get_cascade_activation_functions', 'fann_get_cascade_activation_functions_count', 'fann_get_cascade_activation_steepnesses', 'fann_get_cascade_activation_steepnesses_count', 'fann_get_cascade_candidate_change_fraction', 'fann_get_cascade_candidate_limit', 'fann_get_cascade_candidate_stagnation_epochs', 'fann_get_cascade_max_cand_epochs', 'fann_get_cascade_max_out_epochs', 'fann_get_cascade_min_cand_epochs', 'fann_get_cascade_min_out_epochs', 'fann_get_cascade_num_candidate_groups', 'fann_get_cascade_num_candidates', 'fann_get_cascade_output_change_fraction', 'fann_get_cascade_output_stagnation_epochs', 'fann_get_cascade_weight_multiplier', 'fann_get_connection_array', 'fann_get_connection_rate', 'fann_get_errno', 'fann_get_errstr', 'fann_get_layer_array', 'fann_get_learning_momentum', 'fann_get_learning_rate', 'fann_get_network_type', 'fann_get_num_input', 'fann_get_num_layers', 'fann_get_num_output', 'fann_get_quickprop_decay', 'fann_get_quickprop_mu', 'fann_get_rprop_decrease_factor', 'fann_get_rprop_delta_max', 'fann_get_rprop_delta_min', 'fann_get_rprop_delta_zero', 'fann_get_rprop_increase_factor', 'fann_get_sarprop_step_error_shift', 'fann_get_sarprop_step_error_threshold_factor', 'fann_get_sarprop_temperature', 'fann_get_sarprop_weight_decay_shift', 'fann_get_total_connections', 'fann_get_total_neurons', 'fann_get_train_error_function', 'fann_get_train_stop_function', 'fann_get_training_algorithm', 'fann_init_weights', 'fann_length_train_data', 'fann_merge_train_data', 'fann_num_input_train_data', 'fann_num_output_train_data', 'fann_randomize_weights', 'fann_read_train_from_file', 'fann_reset_errno', 'fann_reset_errstr', 'fann_run', 'fann_save', 'fann_save_train', 'fann_scale_input', 'fann_scale_input_train_data', 'fann_scale_output', 'fann_scale_output_train_data', 'fann_scale_train', 'fann_scale_train_data', 'fann_set_activation_function', 'fann_set_activation_function_hidden', 'fann_set_activation_function_layer', 'fann_set_activation_function_output', 'fann_set_activation_steepness', 'fann_set_activation_steepness_hidden', 'fann_set_activation_steepness_layer', 'fann_set_activation_steepness_output', 'fann_set_bit_fail_limit', 'fann_set_callback', 'fann_set_cascade_activation_functions', 'fann_set_cascade_activation_steepnesses', 'fann_set_cascade_candidate_change_fraction', 'fann_set_cascade_candidate_limit', 'fann_set_cascade_candidate_stagnation_epochs', 'fann_set_cascade_max_cand_epochs', 'fann_set_cascade_max_out_epochs', 'fann_set_cascade_min_cand_epochs', 'fann_set_cascade_min_out_epochs', 'fann_set_cascade_num_candidate_groups', 'fann_set_cascade_output_change_fraction', 'fann_set_cascade_output_stagnation_epochs', 'fann_set_cascade_weight_multiplier', 'fann_set_error_log', 'fann_set_input_scaling_params', 'fann_set_learning_momentum', 'fann_set_learning_rate', 'fann_set_output_scaling_params', 'fann_set_quickprop_decay', 'fann_set_quickprop_mu', 'fann_set_rprop_decrease_factor', 'fann_set_rprop_delta_max', 'fann_set_rprop_delta_min', 'fann_set_rprop_delta_zero', 'fann_set_rprop_increase_factor', 'fann_set_sarprop_step_error_shift', 'fann_set_sarprop_step_error_threshold_factor', 'fann_set_sarprop_temperature', 'fann_set_sarprop_weight_decay_shift', 'fann_set_scaling_params', 'fann_set_train_error_function', 'fann_set_train_stop_function', 'fann_set_training_algorithm', 'fann_set_weight', 'fann_set_weight_array', 'fann_shuffle_train_data', 'fann_subset_train_data', 'fann_test', 'fann_test_data', 'fann_train', 'fann_train_epoch', 'fann_train_on_data', 'fann_train_on_file', 'fbsql_affected_rows', 'fbsql_autocommit', 'fbsql_blob_size', 'fbsql_change_user', 'fbsql_clob_size', 'fbsql_close', 'fbsql_commit', 'fbsql_connect', 'fbsql_create_blob', 'fbsql_create_clob', 'fbsql_create_db', 'fbsql_data_seek', 'fbsql_database', 'fbsql_database_password', 'fbsql_db_query', 'fbsql_db_status', 'fbsql_drop_db', 'fbsql_errno', 'fbsql_error', 'fbsql_fetch_array', 'fbsql_fetch_assoc', 'fbsql_fetch_field', 'fbsql_fetch_lengths', 'fbsql_fetch_object', 'fbsql_fetch_row', 'fbsql_field_flags', 'fbsql_field_len', 'fbsql_field_name', 'fbsql_field_seek', 'fbsql_field_table', 'fbsql_field_type', 'fbsql_free_result', 'fbsql_get_autostart_info', 'fbsql_hostname', 'fbsql_insert_id', 'fbsql_list_dbs', 'fbsql_list_fields', 'fbsql_list_tables', 'fbsql_next_result', 'fbsql_num_fields', 'fbsql_num_rows', 'fbsql_password', 'fbsql_pconnect', 'fbsql_query', 'fbsql_read_blob', 'fbsql_read_clob', 'fbsql_result', 'fbsql_rollback', 'fbsql_rows_fetched', 'fbsql_select_db', 'fbsql_set_characterset', 'fbsql_set_lob_mode', 'fbsql_set_password', 'fbsql_set_transaction', 'fbsql_start_db', 'fbsql_stop_db', 'fbsql_table_name', 'fbsql_username', 'fclose', 'fdf_add_doc_javascript', 'fdf_add_template', 'fdf_close', 'fdf_create', 'fdf_enum_values', 'fdf_get_ap', 'fdf_get_attachment', 'fdf_get_encoding', 'fdf_get_file', 'fdf_get_flags', 'fdf_get_opt', 'fdf_get_status', 'fdf_get_value', 'fdf_get_version', 'fdf_next_field_name', 'fdf_open', 'fdf_open_string', 'fdf_remove_item', 'fdf_save', 'fdf_save_string', 'fdf_set_ap', 'fdf_set_encoding', 'fdf_set_file', 'fdf_set_flags', 'fdf_set_javascript_action', 'fdf_set_on_import_javascript', 'fdf_set_opt', 'fdf_set_status', 'fdf_set_submit_form_action', 'fdf_set_target_frame', 'fdf_set_value', 'fdf_set_version', 'feof', 'fflush', 'ffmpeg_frame::__construct', 'ffmpeg_frame::toGDImage', 'fgetc', 'fgetcsv', 'fgets', 'fgetss', 'file', 'file_get_contents', 'file_put_contents', 'finfo::buffer', 'finfo::file', 'finfo_buffer', 'finfo_close', 'finfo_file', 'finfo_open', 'finfo_set_flags', 'flock', 'fopen', 'fpassthru', 'fprintf', 'fputcsv', 'fputs', 'fread', 'fscanf', 'fseek', 'fstat', 'ftell', 'ftp_alloc', 'ftp_append', 'ftp_cdup', 'ftp_chdir', 'ftp_chmod', 'ftp_close', 'ftp_delete', 'ftp_exec', 'ftp_fget', 'ftp_fput', 'ftp_get', 'ftp_get_option', 'ftp_login', 'ftp_mdtm', 'ftp_mkdir', 'ftp_mlsd', 'ftp_nb_continue', 'ftp_nb_fget', 'ftp_nb_fput', 'ftp_nb_get', 'ftp_nb_put', 'ftp_nlist', 'ftp_pasv', 'ftp_put', 'ftp_pwd', 'ftp_quit', 'ftp_raw', 'ftp_rawlist', 'ftp_rename', 'ftp_rmdir', 'ftp_set_option', 'ftp_site', 'ftp_size', 'ftp_systype', 'ftruncate', 'fwrite', 'get_resource_type', 'gmp_div', 'gnupg::init', 'gnupg_adddecryptkey', 'gnupg_addencryptkey', 'gnupg_addsignkey', 'gnupg_cleardecryptkeys', 'gnupg_clearencryptkeys', 'gnupg_clearsignkeys', 'gnupg_decrypt', 'gnupg_decryptverify', 'gnupg_encrypt', 'gnupg_encryptsign', 'gnupg_export', 'gnupg_geterror', 'gnupg_getprotocol', 'gnupg_import', 'gnupg_init', 'gnupg_keyinfo', 'gnupg_setarmor', 'gnupg_seterrormode', 'gnupg_setsignmode', 'gnupg_sign', 'gnupg_verify', 'gupnp_context_get_host_ip', 'gupnp_context_get_port', 'gupnp_context_get_subscription_timeout', 'gupnp_context_host_path', 'gupnp_context_new', 'gupnp_context_set_subscription_timeout', 'gupnp_context_timeout_add', 'gupnp_context_unhost_path', 'gupnp_control_point_browse_start', 'gupnp_control_point_browse_stop', 'gupnp_control_point_callback_set', 'gupnp_control_point_new', 'gupnp_device_action_callback_set', 'gupnp_device_info_get', 'gupnp_device_info_get_service', 'gupnp_root_device_get_available', 'gupnp_root_device_get_relative_location', 'gupnp_root_device_new', 'gupnp_root_device_set_available', 'gupnp_root_device_start', 'gupnp_root_device_stop', 'gupnp_service_action_get', 'gupnp_service_action_return', 'gupnp_service_action_return_error', 'gupnp_service_action_set', 'gupnp_service_freeze_notify', 'gupnp_service_info_get', 'gupnp_service_info_get_introspection', 'gupnp_service_introspection_get_state_variable', 'gupnp_service_notify', 'gupnp_service_proxy_action_get', 'gupnp_service_proxy_action_set', 'gupnp_service_proxy_add_notify', 'gupnp_service_proxy_callback_set', 'gupnp_service_proxy_get_subscribed', 'gupnp_service_proxy_remove_notify', 'gupnp_service_proxy_send_action', 'gupnp_service_proxy_set_subscribed', 'gupnp_service_thaw_notify', 'gzclose', 'gzeof', 'gzgetc', 'gzgets', 'gzgetss', 'gzpassthru', 'gzputs', 'gzread', 'gzrewind', 'gzseek', 'gztell', 'gzwrite', 'hash_update_stream', 'http\\Env\\Response::send', 'http_get_request_body_stream', 'ibase_add_user', 'ibase_affected_rows', 'ibase_backup', 'ibase_blob_add', 'ibase_blob_cancel', 'ibase_blob_close', 'ibase_blob_create', 'ibase_blob_get', 'ibase_blob_open', 'ibase_close', 'ibase_commit', 'ibase_commit_ret', 'ibase_connect', 'ibase_db_info', 'ibase_delete_user', 'ibase_drop_db', 'ibase_execute', 'ibase_fetch_assoc', 'ibase_fetch_object', 'ibase_fetch_row', 'ibase_field_info', 'ibase_free_event_handler', 'ibase_free_query', 'ibase_free_result', 'ibase_gen_id', 'ibase_maintain_db', 'ibase_modify_user', 'ibase_name_result', 'ibase_num_fields', 'ibase_num_params', 'ibase_param_info', 'ibase_pconnect', 'ibase_prepare', 'ibase_query', 'ibase_restore', 'ibase_rollback', 'ibase_rollback_ret', 'ibase_server_info', 'ibase_service_attach', 'ibase_service_detach', 'ibase_set_event_handler', 'ibase_trans', 'ifx_affected_rows', 'ifx_close', 'ifx_connect', 'ifx_do', 'ifx_error', 'ifx_fetch_row', 'ifx_fieldproperties', 'ifx_fieldtypes', 'ifx_free_result', 'ifx_getsqlca', 'ifx_htmltbl_result', 'ifx_num_fields', 'ifx_num_rows', 'ifx_pconnect', 'ifx_prepare', 'ifx_query', 'image2wbmp', 'imageaffine', 'imagealphablending', 'imageantialias', 'imagearc', 'imagebmp', 'imagechar', 'imagecharup', 'imagecolorallocate', 'imagecolorallocatealpha', 'imagecolorat', 'imagecolorclosest', 'imagecolorclosestalpha', 'imagecolorclosesthwb', 'imagecolordeallocate', 'imagecolorexact', 'imagecolorexactalpha', 'imagecolormatch', 'imagecolorresolve', 'imagecolorresolvealpha', 'imagecolorset', 'imagecolorsforindex', 'imagecolorstotal', 'imagecolortransparent', 'imageconvolution', 'imagecopy', 'imagecopymerge', 'imagecopymergegray', 'imagecopyresampled', 'imagecopyresized', 'imagecrop', 'imagecropauto', 'imagedashedline', 'imagedestroy', 'imageellipse', 'imagefill', 'imagefilledarc', 'imagefilledellipse', 'imagefilledpolygon', 'imagefilledrectangle', 'imagefilltoborder', 'imagefilter', 'imageflip', 'imagefttext', 'imagegammacorrect', 'imagegd', 'imagegd2', 'imagegetclip', 'imagegif', 'imagegrabscreen', 'imagegrabwindow', 'imageinterlace', 'imageistruecolor', 'imagejpeg', 'imagelayereffect', 'imageline', 'imageopenpolygon', 'imagepalettecopy', 'imagepalettetotruecolor', 'imagepng', 'imagepolygon', 'imagepsencodefont', 'imagepsextendfont', 'imagepsfreefont', 'imagepsloadfont', 'imagepsslantfont', 'imagepstext', 'imagerectangle', 'imageresolution', 'imagerotate', 'imagesavealpha', 'imagescale', 'imagesetbrush', 'imagesetclip', 'imagesetinterpolation', 'imagesetpixel', 'imagesetstyle', 'imagesetthickness', 'imagesettile', 'imagestring', 'imagestringup', 'imagesx', 'imagesy', 'imagetruecolortopalette', 'imagettftext', 'imagewbmp', 'imagewebp', 'imagexbm', 'imap_append', 'imap_body', 'imap_bodystruct', 'imap_check', 'imap_clearflag_full', 'imap_close', 'imap_create', 'imap_createmailbox', 'imap_delete', 'imap_deletemailbox', 'imap_expunge', 'imap_fetch_overview', 'imap_fetchbody', 'imap_fetchheader', 'imap_fetchmime', 'imap_fetchstructure', 'imap_fetchtext', 'imap_gc', 'imap_get_quota', 'imap_get_quotaroot', 'imap_getacl', 'imap_getmailboxes', 'imap_getsubscribed', 'imap_header', 'imap_headerinfo', 'imap_headers', 'imap_list', 'imap_listmailbox', 'imap_listscan', 'imap_listsubscribed', 'imap_lsub', 'imap_mail_copy', 'imap_mail_move', 'imap_mailboxmsginfo', 'imap_msgno', 'imap_num_msg', 'imap_num_recent', 'imap_ping', 'imap_rename', 'imap_renamemailbox', 'imap_reopen', 'imap_savebody', 'imap_scan', 'imap_scanmailbox', 'imap_search', 'imap_set_quota', 'imap_setacl', 'imap_setflag_full', 'imap_sort', 'imap_status', 'imap_subscribe', 'imap_thread', 'imap_uid', 'imap_undelete', 'imap_unsubscribe', 'inflate_add', 'inflate_get_read_len', 'inflate_get_status', 'ingres_autocommit', 'ingres_autocommit_state', 'ingres_charset', 'ingres_close', 'ingres_commit', 'ingres_connect', 'ingres_cursor', 'ingres_errno', 'ingres_error', 'ingres_errsqlstate', 'ingres_escape_string', 'ingres_execute', 'ingres_fetch_array', 'ingres_fetch_assoc', 'ingres_fetch_object', 'ingres_fetch_proc_return', 'ingres_fetch_row', 'ingres_field_length', 'ingres_field_name', 'ingres_field_nullable', 'ingres_field_precision', 'ingres_field_scale', 'ingres_field_type', 'ingres_free_result', 'ingres_next_error', 'ingres_num_fields', 'ingres_num_rows', 'ingres_pconnect', 'ingres_prepare', 'ingres_query', 'ingres_result_seek', 'ingres_rollback', 'ingres_set_environment', 'ingres_unbuffered_query', 'inotify_add_watch', 'inotify_init', 'inotify_queue_len', 'inotify_read', 'inotify_rm_watch', 'kadm5_chpass_principal', 'kadm5_create_principal', 'kadm5_delete_principal', 'kadm5_destroy', 'kadm5_flush', 'kadm5_get_policies', 'kadm5_get_principal', 'kadm5_get_principals', 'kadm5_init_with_password', 'kadm5_modify_principal', 'ldap_add', 'ldap_bind', 'ldap_close', 'ldap_compare', 'ldap_control_paged_result', 'ldap_control_paged_result_response', 'ldap_count_entries', 'ldap_delete', 'ldap_errno', 'ldap_error', 'ldap_exop', 'ldap_exop_passwd', 'ldap_exop_refresh', 'ldap_exop_whoami', 'ldap_first_attribute', 'ldap_first_entry', 'ldap_first_reference', 'ldap_free_result', 'ldap_get_attributes', 'ldap_get_dn', 'ldap_get_entries', 'ldap_get_option', 'ldap_get_values', 'ldap_get_values_len', 'ldap_mod_add', 'ldap_mod_del', 'ldap_mod_replace', 'ldap_modify', 'ldap_modify_batch', 'ldap_next_attribute', 'ldap_next_entry', 'ldap_next_reference', 'ldap_parse_exop', 'ldap_parse_reference', 'ldap_parse_result', 'ldap_rename', 'ldap_sasl_bind', 'ldap_set_option', 'ldap_set_rebind_proc', 'ldap_sort', 'ldap_start_tls', 'ldap_unbind', 'libxml_set_streams_context', 'm_checkstatus', 'm_completeauthorizations', 'm_connect', 'm_connectionerror', 'm_deletetrans', 'm_destroyconn', 'm_getcell', 'm_getcellbynum', 'm_getcommadelimited', 'm_getheader', 'm_initconn', 'm_iscommadelimited', 'm_maxconntimeout', 'm_monitor', 'm_numcolumns', 'm_numrows', 'm_parsecommadelimited', 'm_responsekeys', 'm_responseparam', 'm_returnstatus', 'm_setblocking', 'm_setdropfile', 'm_setip', 'm_setssl', 'm_setssl_cafile', 'm_setssl_files', 'm_settimeout', 'm_transactionssent', 'm_transinqueue', 'm_transkeyval', 'm_transnew', 'm_transsend', 'm_validateidentifier', 'm_verifyconnection', 'm_verifysslcert', 'mailparse_determine_best_xfer_encoding', 'mailparse_msg_create', 'mailparse_msg_extract_part', 'mailparse_msg_extract_part_file', 'mailparse_msg_extract_whole_part_file', 'mailparse_msg_free', 'mailparse_msg_get_part', 'mailparse_msg_get_part_data', 'mailparse_msg_get_structure', 'mailparse_msg_parse', 'mailparse_msg_parse_file', 'mailparse_stream_encode', 'mailparse_uudecode_all', 'maxdb::use_result', 'maxdb_affected_rows', 'maxdb_connect', 'maxdb_disable_rpl_parse', 'maxdb_dump_debug_info', 'maxdb_embedded_connect', 'maxdb_enable_reads_from_master', 'maxdb_enable_rpl_parse', 'maxdb_errno', 'maxdb_error', 'maxdb_fetch_lengths', 'maxdb_field_tell', 'maxdb_get_host_info', 'maxdb_get_proto_info', 'maxdb_get_server_info', 'maxdb_get_server_version', 'maxdb_info', 'maxdb_init', 'maxdb_insert_id', 'maxdb_master_query', 'maxdb_more_results', 'maxdb_next_result', 'maxdb_num_fields', 'maxdb_num_rows', 'maxdb_rpl_parse_enabled', 'maxdb_rpl_probe', 'maxdb_select_db', 'maxdb_sqlstate', 'maxdb_stmt::result_metadata', 'maxdb_stmt_affected_rows', 'maxdb_stmt_errno', 'maxdb_stmt_error', 'maxdb_stmt_num_rows', 'maxdb_stmt_param_count', 'maxdb_stmt_result_metadata', 'maxdb_stmt_sqlstate', 'maxdb_thread_id', 'maxdb_use_result', 'maxdb_warning_count', 'mcrypt_enc_get_algorithms_name', 'mcrypt_enc_get_block_size', 'mcrypt_enc_get_iv_size', 'mcrypt_enc_get_key_size', 'mcrypt_enc_get_modes_name', 'mcrypt_enc_get_supported_key_sizes', 'mcrypt_enc_is_block_algorithm', 'mcrypt_enc_is_block_algorithm_mode', 'mcrypt_enc_is_block_mode', 'mcrypt_enc_self_test', 'mcrypt_generic', 'mcrypt_generic_deinit', 'mcrypt_generic_end', 'mcrypt_generic_init', 'mcrypt_module_close', 'mcrypt_module_open', 'mdecrypt_generic', 'mkdir', 'mqseries_back', 'mqseries_begin', 'mqseries_close', 'mqseries_cmit', 'mqseries_conn', 'mqseries_connx', 'mqseries_disc', 'mqseries_get', 'mqseries_inq', 'mqseries_open', 'mqseries_put', 'mqseries_put1', 'mqseries_set', 'msg_get_queue', 'msg_receive', 'msg_remove_queue', 'msg_send', 'msg_set_queue', 'msg_stat_queue', 'msql_affected_rows', 'msql_close', 'msql_connect', 'msql_create_db', 'msql_data_seek', 'msql_db_query', 'msql_drop_db', 'msql_fetch_array', 'msql_fetch_field', 'msql_fetch_object', 'msql_fetch_row', 'msql_field_flags', 'msql_field_len', 'msql_field_name', 'msql_field_seek', 'msql_field_table', 'msql_field_type', 'msql_free_result', 'msql_list_dbs', 'msql_list_fields', 'msql_list_tables', 'msql_num_fields', 'msql_num_rows', 'msql_pconnect', 'msql_query', 'msql_result', 'msql_select_db', 'mssql_bind', 'mssql_close', 'mssql_connect', 'mssql_data_seek', 'mssql_execute', 'mssql_fetch_array', 'mssql_fetch_assoc', 'mssql_fetch_batch', 'mssql_fetch_field', 'mssql_fetch_object', 'mssql_fetch_row', 'mssql_field_length', 'mssql_field_name', 'mssql_field_seek', 'mssql_field_type', 'mssql_free_result', 'mssql_free_statement', 'mssql_init', 'mssql_next_result', 'mssql_num_fields', 'mssql_num_rows', 'mssql_pconnect', 'mssql_query', 'mssql_result', 'mssql_rows_affected', 'mssql_select_db', 'mysql_affected_rows', 'mysql_client_encoding', 'mysql_close', 'mysql_connect', 'mysql_create_db', 'mysql_data_seek', 'mysql_db_name', 'mysql_db_query', 'mysql_drop_db', 'mysql_errno', 'mysql_error', 'mysql_fetch_array', 'mysql_fetch_assoc', 'mysql_fetch_field', 'mysql_fetch_lengths', 'mysql_fetch_object', 'mysql_fetch_row', 'mysql_field_flags', 'mysql_field_len', 'mysql_field_name', 'mysql_field_seek', 'mysql_field_table', 'mysql_field_type', 'mysql_free_result', 'mysql_get_host_info', 'mysql_get_proto_info', 'mysql_get_server_info', 'mysql_info', 'mysql_insert_id', 'mysql_list_dbs', 'mysql_list_fields', 'mysql_list_processes', 'mysql_list_tables', 'mysql_num_fields', 'mysql_num_rows', 'mysql_pconnect', 'mysql_ping', 'mysql_query', 'mysql_real_escape_string', 'mysql_result', 'mysql_select_db', 'mysql_set_charset', 'mysql_stat', 'mysql_tablename', 'mysql_thread_id', 'mysql_unbuffered_query', 'mysqlnd_uh_convert_to_mysqlnd', 'ncurses_bottom_panel', 'ncurses_del_panel', 'ncurses_delwin', 'ncurses_getmaxyx', 'ncurses_getyx', 'ncurses_hide_panel', 'ncurses_keypad', 'ncurses_meta', 'ncurses_move_panel', 'ncurses_mvwaddstr', 'ncurses_new_panel', 'ncurses_newpad', 'ncurses_newwin', 'ncurses_panel_above', 'ncurses_panel_below', 'ncurses_panel_window', 'ncurses_pnoutrefresh', 'ncurses_prefresh', 'ncurses_replace_panel', 'ncurses_show_panel', 'ncurses_top_panel', 'ncurses_waddch', 'ncurses_waddstr', 'ncurses_wattroff', 'ncurses_wattron', 'ncurses_wattrset', 'ncurses_wborder', 'ncurses_wclear', 'ncurses_wcolor_set', 'ncurses_werase', 'ncurses_wgetch', 'ncurses_whline', 'ncurses_wmouse_trafo', 'ncurses_wmove', 'ncurses_wnoutrefresh', 'ncurses_wrefresh', 'ncurses_wstandend', 'ncurses_wstandout', 'ncurses_wvline', 'newt_button', 'newt_button_bar', 'newt_checkbox', 'newt_checkbox_get_value', 'newt_checkbox_set_flags', 'newt_checkbox_set_value', 'newt_checkbox_tree', 'newt_checkbox_tree_add_item', 'newt_checkbox_tree_find_item', 'newt_checkbox_tree_get_current', 'newt_checkbox_tree_get_entry_value', 'newt_checkbox_tree_get_multi_selection', 'newt_checkbox_tree_get_selection', 'newt_checkbox_tree_multi', 'newt_checkbox_tree_set_current', 'newt_checkbox_tree_set_entry', 'newt_checkbox_tree_set_entry_value', 'newt_checkbox_tree_set_width', 'newt_compact_button', 'newt_component_add_callback', 'newt_component_takes_focus', 'newt_create_grid', 'newt_draw_form', 'newt_entry', 'newt_entry_get_value', 'newt_entry_set', 'newt_entry_set_filter', 'newt_entry_set_flags', 'newt_form', 'newt_form_add_component', 'newt_form_add_components', 'newt_form_add_hot_key', 'newt_form_destroy', 'newt_form_get_current', 'newt_form_run', 'newt_form_set_background', 'newt_form_set_height', 'newt_form_set_size', 'newt_form_set_timer', 'newt_form_set_width', 'newt_form_watch_fd', 'newt_grid_add_components_to_form', 'newt_grid_basic_window', 'newt_grid_free', 'newt_grid_get_size', 'newt_grid_h_close_stacked', 'newt_grid_h_stacked', 'newt_grid_place', 'newt_grid_set_field', 'newt_grid_simple_window', 'newt_grid_v_close_stacked', 'newt_grid_v_stacked', 'newt_grid_wrapped_window', 'newt_grid_wrapped_window_at', 'newt_label', 'newt_label_set_text', 'newt_listbox', 'newt_listbox_append_entry', 'newt_listbox_clear', 'newt_listbox_clear_selection', 'newt_listbox_delete_entry', 'newt_listbox_get_current', 'newt_listbox_get_selection', 'newt_listbox_insert_entry', 'newt_listbox_item_count', 'newt_listbox_select_item', 'newt_listbox_set_current', 'newt_listbox_set_current_by_key', 'newt_listbox_set_data', 'newt_listbox_set_entry', 'newt_listbox_set_width', 'newt_listitem', 'newt_listitem_get_data', 'newt_listitem_set', 'newt_radio_get_current', 'newt_radiobutton', 'newt_run_form', 'newt_scale', 'newt_scale_set', 'newt_scrollbar_set', 'newt_textbox', 'newt_textbox_get_num_lines', 'newt_textbox_reflowed', 'newt_textbox_set_height', 'newt_textbox_set_text', 'newt_vertical_scrollbar', 'oci_bind_array_by_name', 'oci_bind_by_name', 'oci_cancel', 'oci_close', 'oci_commit', 'oci_connect', 'oci_define_by_name', 'oci_error', 'oci_execute', 'oci_fetch', 'oci_fetch_all', 'oci_fetch_array', 'oci_fetch_assoc', 'oci_fetch_object', 'oci_fetch_row', 'oci_field_is_null', 'oci_field_name', 'oci_field_precision', 'oci_field_scale', 'oci_field_size', 'oci_field_type', 'oci_field_type_raw', 'oci_free_cursor', 'oci_free_statement', 'oci_get_implicit_resultset', 'oci_new_collection', 'oci_new_connect', 'oci_new_cursor', 'oci_new_descriptor', 'oci_num_fields', 'oci_num_rows', 'oci_parse', 'oci_pconnect', 'oci_register_taf_callback', 'oci_result', 'oci_rollback', 'oci_server_version', 'oci_set_action', 'oci_set_client_identifier', 'oci_set_client_info', 'oci_set_module_name', 'oci_set_prefetch', 'oci_statement_type', 'oci_unregister_taf_callback', 'odbc_autocommit', 'odbc_close', 'odbc_columnprivileges', 'odbc_columns', 'odbc_commit', 'odbc_connect', 'odbc_cursor', 'odbc_data_source', 'odbc_do', 'odbc_error', 'odbc_errormsg', 'odbc_exec', 'odbc_execute', 'odbc_fetch_array', 'odbc_fetch_into', 'odbc_fetch_row', 'odbc_field_len', 'odbc_field_name', 'odbc_field_num', 'odbc_field_precision', 'odbc_field_scale', 'odbc_field_type', 'odbc_foreignkeys', 'odbc_free_result', 'odbc_gettypeinfo', 'odbc_next_result', 'odbc_num_fields', 'odbc_num_rows', 'odbc_pconnect', 'odbc_prepare', 'odbc_primarykeys', 'odbc_procedurecolumns', 'odbc_procedures', 'odbc_result', 'odbc_result_all', 'odbc_rollback', 'odbc_setoption', 'odbc_specialcolumns', 'odbc_statistics', 'odbc_tableprivileges', 'odbc_tables', 'openal_buffer_create', 'openal_buffer_data', 'openal_buffer_destroy', 'openal_buffer_get', 'openal_buffer_loadwav', 'openal_context_create', 'openal_context_current', 'openal_context_destroy', 'openal_context_process', 'openal_context_suspend', 'openal_device_close', 'openal_device_open', 'openal_source_create', 'openal_source_destroy', 'openal_source_get', 'openal_source_pause', 'openal_source_play', 'openal_source_rewind', 'openal_source_set', 'openal_source_stop', 'openal_stream', 'opendir', 'openssl_csr_new', 'openssl_dh_compute_key', 'openssl_free_key', 'openssl_pkey_export', 'openssl_pkey_free', 'openssl_pkey_get_details', 'openssl_spki_new', 'openssl_x509_free', 'pclose', 'pfsockopen', 'pg_affected_rows', 'pg_cancel_query', 'pg_client_encoding', 'pg_close', 'pg_connect_poll', 'pg_connection_busy', 'pg_connection_reset', 'pg_connection_status', 'pg_consume_input', 'pg_convert', 'pg_copy_from', 'pg_copy_to', 'pg_dbname', 'pg_delete', 'pg_end_copy', 'pg_escape_bytea', 'pg_escape_identifier', 'pg_escape_literal', 'pg_escape_string', 'pg_execute', 'pg_fetch_all', 'pg_fetch_all_columns', 'pg_fetch_array', 'pg_fetch_assoc', 'pg_fetch_row', 'pg_field_name', 'pg_field_num', 'pg_field_size', 'pg_field_table', 'pg_field_type', 'pg_field_type_oid', 'pg_flush', 'pg_free_result', 'pg_get_notify', 'pg_get_pid', 'pg_get_result', 'pg_host', 'pg_insert', 'pg_last_error', 'pg_last_notice', 'pg_last_oid', 'pg_lo_close', 'pg_lo_create', 'pg_lo_export', 'pg_lo_import', 'pg_lo_open', 'pg_lo_read', 'pg_lo_read_all', 'pg_lo_seek', 'pg_lo_tell', 'pg_lo_truncate', 'pg_lo_unlink', 'pg_lo_write', 'pg_meta_data', 'pg_num_fields', 'pg_num_rows', 'pg_options', 'pg_parameter_status', 'pg_ping', 'pg_port', 'pg_prepare', 'pg_put_line', 'pg_query', 'pg_query_params', 'pg_result_error', 'pg_result_error_field', 'pg_result_seek', 'pg_result_status', 'pg_select', 'pg_send_execute', 'pg_send_prepare', 'pg_send_query', 'pg_send_query_params', 'pg_set_client_encoding', 'pg_set_error_verbosity', 'pg_socket', 'pg_trace', 'pg_transaction_status', 'pg_tty', 'pg_untrace', 'pg_update', 'pg_version', 'php_user_filter::filter', 'proc_close', 'proc_get_status', 'proc_terminate', 'ps_add_bookmark', 'ps_add_launchlink', 'ps_add_locallink', 'ps_add_note', 'ps_add_pdflink', 'ps_add_weblink', 'ps_arc', 'ps_arcn', 'ps_begin_page', 'ps_begin_pattern', 'ps_begin_template', 'ps_circle', 'ps_clip', 'ps_close', 'ps_close_image', 'ps_closepath', 'ps_closepath_stroke', 'ps_continue_text', 'ps_curveto', 'ps_delete', 'ps_end_page', 'ps_end_pattern', 'ps_end_template', 'ps_fill', 'ps_fill_stroke', 'ps_findfont', 'ps_get_buffer', 'ps_get_parameter', 'ps_get_value', 'ps_hyphenate', 'ps_include_file', 'ps_lineto', 'ps_makespotcolor', 'ps_moveto', 'ps_new', 'ps_open_file', 'ps_open_image', 'ps_open_image_file', 'ps_open_memory_image', 'ps_place_image', 'ps_rect', 'ps_restore', 'ps_rotate', 'ps_save', 'ps_scale', 'ps_set_border_color', 'ps_set_border_dash', 'ps_set_border_style', 'ps_set_info', 'ps_set_parameter', 'ps_set_text_pos', 'ps_set_value', 'ps_setcolor', 'ps_setdash', 'ps_setflat', 'ps_setfont', 'ps_setgray', 'ps_setlinecap', 'ps_setlinejoin', 'ps_setlinewidth', 'ps_setmiterlimit', 'ps_setoverprintmode', 'ps_setpolydash', 'ps_shading', 'ps_shading_pattern', 'ps_shfill', 'ps_show', 'ps_show2', 'ps_show_boxed', 'ps_show_xy', 'ps_show_xy2', 'ps_string_geometry', 'ps_stringwidth', 'ps_stroke', 'ps_symbol', 'ps_symbol_name', 'ps_symbol_width', 'ps_translate', 'px_close', 'px_create_fp', 'px_date2string', 'px_delete', 'px_delete_record', 'px_get_field', 'px_get_info', 'px_get_parameter', 'px_get_record', 'px_get_schema', 'px_get_value', 'px_insert_record', 'px_new', 'px_numfields', 'px_numrecords', 'px_open_fp', 'px_put_record', 'px_retrieve_record', 'px_set_blob_file', 'px_set_parameter', 'px_set_tablename', 'px_set_targetencoding', 'px_set_value', 'px_timestamp2string', 'px_update_record', 'radius_acct_open', 'radius_add_server', 'radius_auth_open', 'radius_close', 'radius_config', 'radius_create_request', 'radius_demangle', 'radius_demangle_mppe_key', 'radius_get_attr', 'radius_put_addr', 'radius_put_attr', 'radius_put_int', 'radius_put_string', 'radius_put_vendor_addr', 'radius_put_vendor_attr', 'radius_put_vendor_int', 'radius_put_vendor_string', 'radius_request_authenticator', 'radius_salt_encrypt_attr', 'radius_send_request', 'radius_server_secret', 'radius_strerror', 'readdir', 'readfile', 'recode_file', 'rename', 'rewind', 'rewinddir', 'rmdir', 'rpm_close', 'rpm_get_tag', 'rpm_open', 'sapi_windows_vt100_support', 'scandir', 'sem_acquire', 'sem_get', 'sem_release', 'sem_remove', 'set_file_buffer', 'shm_attach', 'shm_detach', 'shm_get_var', 'shm_has_var', 'shm_put_var', 'shm_remove', 'shm_remove_var', 'shmop_close', 'shmop_delete', 'shmop_open', 'shmop_read', 'shmop_size', 'shmop_write', 'socket_accept', 'socket_addrinfo_bind', 'socket_addrinfo_connect', 'socket_addrinfo_explain', 'socket_bind', 'socket_clear_error', 'socket_close', 'socket_connect', 'socket_export_stream', 'socket_get_option', 'socket_get_status', 'socket_getopt', 'socket_getpeername', 'socket_getsockname', 'socket_import_stream', 'socket_last_error', 'socket_listen', 'socket_read', 'socket_recv', 'socket_recvfrom', 'socket_recvmsg', 'socket_send', 'socket_sendmsg', 'socket_sendto', 'socket_set_block', 'socket_set_blocking', 'socket_set_nonblock', 'socket_set_option', 'socket_set_timeout', 'socket_shutdown', 'socket_write', 'sqlite_close', 'sqlite_fetch_string', 'sqlite_has_more', 'sqlite_open', 'sqlite_popen', 'sqlsrv_begin_transaction', 'sqlsrv_cancel', 'sqlsrv_client_info', 'sqlsrv_close', 'sqlsrv_commit', 'sqlsrv_connect', 'sqlsrv_execute', 'sqlsrv_fetch', 'sqlsrv_fetch_array', 'sqlsrv_fetch_object', 'sqlsrv_field_metadata', 'sqlsrv_free_stmt', 'sqlsrv_get_field', 'sqlsrv_has_rows', 'sqlsrv_next_result', 'sqlsrv_num_fields', 'sqlsrv_num_rows', 'sqlsrv_prepare', 'sqlsrv_query', 'sqlsrv_rollback', 'sqlsrv_rows_affected', 'sqlsrv_send_stream_data', 'sqlsrv_server_info', 'ssh2_auth_agent', 'ssh2_auth_hostbased_file', 'ssh2_auth_none', 'ssh2_auth_password', 'ssh2_auth_pubkey_file', 'ssh2_disconnect', 'ssh2_exec', 'ssh2_fetch_stream', 'ssh2_fingerprint', 'ssh2_methods_negotiated', 'ssh2_publickey_add', 'ssh2_publickey_init', 'ssh2_publickey_list', 'ssh2_publickey_remove', 'ssh2_scp_recv', 'ssh2_scp_send', 'ssh2_sftp', 'ssh2_sftp_chmod', 'ssh2_sftp_lstat', 'ssh2_sftp_mkdir', 'ssh2_sftp_readlink', 'ssh2_sftp_realpath', 'ssh2_sftp_rename', 'ssh2_sftp_rmdir', 'ssh2_sftp_stat', 'ssh2_sftp_symlink', 'ssh2_sftp_unlink', 'ssh2_shell', 'ssh2_tunnel', 'stomp_connect', 'streamWrapper::stream_cast', 'stream_bucket_append', 'stream_bucket_make_writeable', 'stream_bucket_new', 'stream_bucket_prepend', 'stream_context_create', 'stream_context_get_default', 'stream_context_get_options', 'stream_context_get_params', 'stream_context_set_default', 'stream_context_set_params', 'stream_copy_to_stream', 'stream_encoding', 'stream_filter_append', 'stream_filter_prepend', 'stream_filter_remove', 'stream_get_contents', 'stream_get_line', 'stream_get_meta_data', 'stream_isatty', 'stream_set_blocking', 'stream_set_chunk_size', 'stream_set_read_buffer', 'stream_set_timeout', 'stream_set_write_buffer', 'stream_socket_accept', 'stream_socket_client', 'stream_socket_enable_crypto', 'stream_socket_get_name', 'stream_socket_recvfrom', 'stream_socket_sendto', 'stream_socket_server', 'stream_socket_shutdown', 'stream_supports_lock', 'svn_fs_abort_txn', 'svn_fs_apply_text', 'svn_fs_begin_txn2', 'svn_fs_change_node_prop', 'svn_fs_check_path', 'svn_fs_contents_changed', 'svn_fs_copy', 'svn_fs_delete', 'svn_fs_dir_entries', 'svn_fs_file_contents', 'svn_fs_file_length', 'svn_fs_is_dir', 'svn_fs_is_file', 'svn_fs_make_dir', 'svn_fs_make_file', 'svn_fs_node_created_rev', 'svn_fs_node_prop', 'svn_fs_props_changed', 'svn_fs_revision_prop', 'svn_fs_revision_root', 'svn_fs_txn_root', 'svn_fs_youngest_rev', 'svn_repos_create', 'svn_repos_fs', 'svn_repos_fs_begin_txn_for_commit', 'svn_repos_fs_commit_txn', 'svn_repos_open', 'sybase_affected_rows', 'sybase_close', 'sybase_connect', 'sybase_data_seek', 'sybase_fetch_array', 'sybase_fetch_assoc', 'sybase_fetch_field', 'sybase_fetch_object', 'sybase_fetch_row', 'sybase_field_seek', 'sybase_free_result', 'sybase_num_fields', 'sybase_num_rows', 'sybase_pconnect', 'sybase_query', 'sybase_result', 'sybase_select_db', 'sybase_set_message_handler', 'sybase_unbuffered_query', 'tmpfile', 'udm_add_search_limit', 'udm_alloc_agent', 'udm_alloc_agent_array', 'udm_cat_list', 'udm_cat_path', 'udm_check_charset', 'udm_clear_search_limits', 'udm_crc32', 'udm_errno', 'udm_error', 'udm_find', 'udm_free_agent', 'udm_free_res', 'udm_get_doc_count', 'udm_get_res_field', 'udm_get_res_param', 'udm_hash32', 'udm_load_ispell_data', 'udm_set_agent_param', 'unlink', 'vfprintf', 'w32api_init_dtype', 'wddx_add_vars', 'wddx_packet_end', 'wddx_packet_start', 'xml_get_current_byte_index', 'xml_get_current_column_number', 'xml_get_current_line_number', 'xml_get_error_code', 'xml_parse', 'xml_parse_into_struct', 'xml_parser_create', 'xml_parser_create_ns', 'xml_parser_free', 'xml_parser_get_option', 'xml_parser_set_option', 'xml_set_character_data_handler', 'xml_set_default_handler', 'xml_set_element_handler', 'xml_set_end_namespace_decl_handler', 'xml_set_external_entity_ref_handler', 'xml_set_notation_decl_handler', 'xml_set_object', 'xml_set_processing_instruction_handler', 'xml_set_start_namespace_decl_handler', 'xml_set_unparsed_entity_decl_handler', 'xmlrpc_server_add_introspection_data', 'xmlrpc_server_call_method', 'xmlrpc_server_create', 'xmlrpc_server_destroy', 'xmlrpc_server_register_introspection_callback', 'xmlrpc_server_register_method', 'xmlwriter_end_attribute', 'xmlwriter_end_cdata', 'xmlwriter_end_comment', 'xmlwriter_end_document', 'xmlwriter_end_dtd', 'xmlwriter_end_dtd_attlist', 'xmlwriter_end_dtd_element', 'xmlwriter_end_dtd_entity', 'xmlwriter_end_element', 'xmlwriter_end_pi', 'xmlwriter_flush', 'xmlwriter_full_end_element', 'xmlwriter_open_memory', 'xmlwriter_open_uri', 'xmlwriter_output_memory', 'xmlwriter_set_indent', 'xmlwriter_set_indent_string', 'xmlwriter_start_attribute', 'xmlwriter_start_attribute_ns', 'xmlwriter_start_cdata', 'xmlwriter_start_comment', 'xmlwriter_start_document', 'xmlwriter_start_dtd', 'xmlwriter_start_dtd_attlist', 'xmlwriter_start_dtd_element', 'xmlwriter_start_dtd_entity', 'xmlwriter_start_element', 'xmlwriter_start_element_ns', 'xmlwriter_start_pi', 'xmlwriter_text', 'xmlwriter_write_attribute', 'xmlwriter_write_attribute_ns', 'xmlwriter_write_cdata', 'xmlwriter_write_comment', 'xmlwriter_write_dtd', 'xmlwriter_write_dtd_attlist', 'xmlwriter_write_dtd_element', 'xmlwriter_write_dtd_entity', 'xmlwriter_write_element', 'xmlwriter_write_element_ns', 'xmlwriter_write_pi', 'xmlwriter_write_raw', 'xslt_create', 'yaz_addinfo', 'yaz_ccl_conf', 'yaz_ccl_parse', 'yaz_close', 'yaz_database', 'yaz_element', 'yaz_errno', 'yaz_error', 'yaz_es', 'yaz_es_result', 'yaz_get_option', 'yaz_hits', 'yaz_itemorder', 'yaz_present', 'yaz_range', 'yaz_record', 'yaz_scan', 'yaz_scan_result', 'yaz_schema', 'yaz_search', 'yaz_sort', 'yaz_syntax', 'zip_close', 'zip_entry_close', 'zip_entry_compressedsize', 'zip_entry_compressionmethod', 'zip_entry_filesize', 'zip_entry_name', 'zip_entry_open', 'zip_entry_read', 'zip_open', 'zip_read']; + return ['Directory::close', 'Directory::read', 'Directory::rewind', 'DirectoryIterator::openFile', 'FilesystemIterator::openFile', 'Gmagick::readimagefile', 'HttpResponse::getRequestBodyStream', 'HttpResponse::getStream', 'HttpResponse::setStream', 'Imagick::pingImageFile', 'Imagick::readImageFile', 'Imagick::writeImageFile', 'Imagick::writeImagesFile', 'MongoGridFSCursor::__construct', 'MongoGridFSFile::getResource', 'MysqlndUhConnection::stmtInit', 'MysqlndUhConnection::storeResult', 'MysqlndUhConnection::useResult', 'PDF_activate_item', 'PDF_add_launchlink', 'PDF_add_locallink', 'PDF_add_nameddest', 'PDF_add_note', 'PDF_add_pdflink', 'PDF_add_table_cell', 'PDF_add_textflow', 'PDF_add_thumbnail', 'PDF_add_weblink', 'PDF_arc', 'PDF_arcn', 'PDF_attach_file', 'PDF_begin_document', 'PDF_begin_font', 'PDF_begin_glyph', 'PDF_begin_item', 'PDF_begin_layer', 'PDF_begin_page', 'PDF_begin_page_ext', 'PDF_begin_pattern', 'PDF_begin_template', 'PDF_begin_template_ext', 'PDF_circle', 'PDF_clip', 'PDF_close', 'PDF_close_image', 'PDF_close_pdi', 'PDF_close_pdi_page', 'PDF_closepath', 'PDF_closepath_fill_stroke', 'PDF_closepath_stroke', 'PDF_concat', 'PDF_continue_text', 'PDF_create_3dview', 'PDF_create_action', 'PDF_create_annotation', 'PDF_create_bookmark', 'PDF_create_field', 'PDF_create_fieldgroup', 'PDF_create_gstate', 'PDF_create_pvf', 'PDF_create_textflow', 'PDF_curveto', 'PDF_define_layer', 'PDF_delete', 'PDF_delete_pvf', 'PDF_delete_table', 'PDF_delete_textflow', 'PDF_encoding_set_char', 'PDF_end_document', 'PDF_end_font', 'PDF_end_glyph', 'PDF_end_item', 'PDF_end_layer', 'PDF_end_page', 'PDF_end_page_ext', 'PDF_end_pattern', 'PDF_end_template', 'PDF_endpath', 'PDF_fill', 'PDF_fill_imageblock', 'PDF_fill_pdfblock', 'PDF_fill_stroke', 'PDF_fill_textblock', 'PDF_findfont', 'PDF_fit_image', 'PDF_fit_pdi_page', 'PDF_fit_table', 'PDF_fit_textflow', 'PDF_fit_textline', 'PDF_get_apiname', 'PDF_get_buffer', 'PDF_get_errmsg', 'PDF_get_errnum', 'PDF_get_parameter', 'PDF_get_pdi_parameter', 'PDF_get_pdi_value', 'PDF_get_value', 'PDF_info_font', 'PDF_info_matchbox', 'PDF_info_table', 'PDF_info_textflow', 'PDF_info_textline', 'PDF_initgraphics', 'PDF_lineto', 'PDF_load_3ddata', 'PDF_load_font', 'PDF_load_iccprofile', 'PDF_load_image', 'PDF_makespotcolor', 'PDF_moveto', 'PDF_new', 'PDF_open_ccitt', 'PDF_open_file', 'PDF_open_image', 'PDF_open_image_file', 'PDF_open_memory_image', 'PDF_open_pdi', 'PDF_open_pdi_document', 'PDF_open_pdi_page', 'PDF_pcos_get_number', 'PDF_pcos_get_stream', 'PDF_pcos_get_string', 'PDF_place_image', 'PDF_place_pdi_page', 'PDF_process_pdi', 'PDF_rect', 'PDF_restore', 'PDF_resume_page', 'PDF_rotate', 'PDF_save', 'PDF_scale', 'PDF_set_border_color', 'PDF_set_border_dash', 'PDF_set_border_style', 'PDF_set_gstate', 'PDF_set_info', 'PDF_set_layer_dependency', 'PDF_set_parameter', 'PDF_set_text_pos', 'PDF_set_value', 'PDF_setcolor', 'PDF_setdash', 'PDF_setdashpattern', 'PDF_setflat', 'PDF_setfont', 'PDF_setgray', 'PDF_setgray_fill', 'PDF_setgray_stroke', 'PDF_setlinecap', 'PDF_setlinejoin', 'PDF_setlinewidth', 'PDF_setmatrix', 'PDF_setmiterlimit', 'PDF_setrgbcolor', 'PDF_setrgbcolor_fill', 'PDF_setrgbcolor_stroke', 'PDF_shading', 'PDF_shading_pattern', 'PDF_shfill', 'PDF_show', 'PDF_show_boxed', 'PDF_show_xy', 'PDF_skew', 'PDF_stringwidth', 'PDF_stroke', 'PDF_suspend_page', 'PDF_translate', 'PDF_utf16_to_utf8', 'PDF_utf32_to_utf16', 'PDF_utf8_to_utf16', 'PDO::pgsqlLOBOpen', 'RarEntry::getStream', 'SQLite3::openBlob', 'SWFMovie::saveToFile', 'SplFileInfo::openFile', 'SplFileObject::openFile', 'SplTempFileObject::openFile', 'V8Js::compileString', 'V8Js::executeScript', 'PHPUnit\\Vtiful\\Kernel\\Excel::setColumn', 'PHPUnit\\Vtiful\\Kernel\\Excel::setRow', 'PHPUnit\\Vtiful\\Kernel\\Format::align', 'PHPUnit\\Vtiful\\Kernel\\Format::bold', 'PHPUnit\\Vtiful\\Kernel\\Format::italic', 'PHPUnit\\Vtiful\\Kernel\\Format::underline', 'XMLWriter::openMemory', 'XMLWriter::openURI', 'ZipArchive::getStream', 'Zookeeper::setLogStream', 'apc_bin_dumpfile', 'apc_bin_loadfile', 'bbcode_add_element', 'bbcode_add_smiley', 'bbcode_create', 'bbcode_destroy', 'bbcode_parse', 'bbcode_set_arg_parser', 'bbcode_set_flags', 'bcompiler_read', 'bcompiler_write_class', 'bcompiler_write_constant', 'bcompiler_write_exe_footer', 'bcompiler_write_file', 'bcompiler_write_footer', 'bcompiler_write_function', 'bcompiler_write_functions_from_file', 'bcompiler_write_header', 'bcompiler_write_included_filename', 'bzclose', 'bzerrno', 'bzerror', 'bzerrstr', 'bzflush', 'bzopen', 'bzread', 'bzwrite', 'cairo_surface_write_to_png', 'closedir', 'copy', 'crack_closedict', 'crack_opendict', 'cubrid_bind', 'cubrid_close_prepare', 'cubrid_close_request', 'cubrid_col_get', 'cubrid_col_size', 'cubrid_column_names', 'cubrid_column_types', 'cubrid_commit', 'cubrid_connect', 'cubrid_connect_with_url', 'cubrid_current_oid', 'cubrid_db_parameter', 'cubrid_disconnect', 'cubrid_drop', 'cubrid_fetch', 'cubrid_free_result', 'cubrid_get', 'cubrid_get_autocommit', 'cubrid_get_charset', 'cubrid_get_class_name', 'cubrid_get_db_parameter', 'cubrid_get_query_timeout', 'cubrid_get_server_info', 'cubrid_insert_id', 'cubrid_is_instance', 'cubrid_lob2_bind', 'cubrid_lob2_close', 'cubrid_lob2_export', 'cubrid_lob2_import', 'cubrid_lob2_new', 'cubrid_lob2_read', 'cubrid_lob2_seek', 'cubrid_lob2_seek64', 'cubrid_lob2_size', 'cubrid_lob2_size64', 'cubrid_lob2_tell', 'cubrid_lob2_tell64', 'cubrid_lob2_write', 'cubrid_lob_export', 'cubrid_lob_get', 'cubrid_lob_send', 'cubrid_lob_size', 'cubrid_lock_read', 'cubrid_lock_write', 'cubrid_move_cursor', 'cubrid_next_result', 'cubrid_num_cols', 'cubrid_num_rows', 'cubrid_pconnect', 'cubrid_pconnect_with_url', 'cubrid_prepare', 'cubrid_put', 'cubrid_query', 'cubrid_rollback', 'cubrid_schema', 'cubrid_seq_add', 'cubrid_seq_drop', 'cubrid_seq_insert', 'cubrid_seq_put', 'cubrid_set_add', 'cubrid_set_autocommit', 'cubrid_set_db_parameter', 'cubrid_set_drop', 'cubrid_set_query_timeout', 'cubrid_unbuffered_query', 'curl_close', 'curl_copy_handle', 'curl_errno', 'curl_error', 'curl_escape', 'curl_exec', 'curl_getinfo', 'curl_multi_add_handle', 'curl_multi_close', 'curl_multi_errno', 'curl_multi_exec', 'curl_multi_getcontent', 'curl_multi_info_read', 'curl_multi_remove_handle', 'curl_multi_select', 'curl_multi_setopt', 'curl_pause', 'curl_reset', 'curl_setopt', 'curl_setopt_array', 'curl_share_close', 'curl_share_errno', 'curl_share_init', 'curl_share_setopt', 'curl_unescape', 'cyrus_authenticate', 'cyrus_bind', 'cyrus_close', 'cyrus_connect', 'cyrus_query', 'cyrus_unbind', 'db2_autocommit', 'db2_bind_param', 'db2_client_info', 'db2_close', 'db2_column_privileges', 'db2_columns', 'db2_commit', 'db2_conn_error', 'db2_conn_errormsg', 'db2_connect', 'db2_cursor_type', 'db2_exec', 'db2_execute', 'db2_fetch_array', 'db2_fetch_assoc', 'db2_fetch_both', 'db2_fetch_object', 'db2_fetch_row', 'db2_field_display_size', 'db2_field_name', 'db2_field_num', 'db2_field_precision', 'db2_field_scale', 'db2_field_type', 'db2_field_width', 'db2_foreign_keys', 'db2_free_result', 'db2_free_stmt', 'db2_get_option', 'db2_last_insert_id', 'db2_lob_read', 'db2_next_result', 'db2_num_fields', 'db2_num_rows', 'db2_pclose', 'db2_pconnect', 'db2_prepare', 'db2_primary_keys', 'db2_procedure_columns', 'db2_procedures', 'db2_result', 'db2_rollback', 'db2_server_info', 'db2_set_option', 'db2_special_columns', 'db2_statistics', 'db2_stmt_error', 'db2_stmt_errormsg', 'db2_table_privileges', 'db2_tables', 'dba_close', 'dba_delete', 'dba_exists', 'dba_fetch', 'dba_firstkey', 'dba_insert', 'dba_nextkey', 'dba_open', 'dba_optimize', 'dba_popen', 'dba_replace', 'dba_sync', 'dbplus_add', 'dbplus_aql', 'dbplus_close', 'dbplus_curr', 'dbplus_find', 'dbplus_first', 'dbplus_flush', 'dbplus_freelock', 'dbplus_freerlocks', 'dbplus_getlock', 'dbplus_getunique', 'dbplus_info', 'dbplus_last', 'dbplus_lockrel', 'dbplus_next', 'dbplus_open', 'dbplus_prev', 'dbplus_rchperm', 'dbplus_rcreate', 'dbplus_rcrtexact', 'dbplus_rcrtlike', 'dbplus_restorepos', 'dbplus_rkeys', 'dbplus_ropen', 'dbplus_rquery', 'dbplus_rrename', 'dbplus_rsecindex', 'dbplus_runlink', 'dbplus_rzap', 'dbplus_savepos', 'dbplus_setindex', 'dbplus_setindexbynumber', 'dbplus_sql', 'dbplus_tremove', 'dbplus_undo', 'dbplus_undoprepare', 'dbplus_unlockrel', 'dbplus_unselect', 'dbplus_update', 'dbplus_xlockrel', 'dbplus_xunlockrel', 'deflate_add', 'dio_close', 'dio_fcntl', 'dio_open', 'dio_read', 'dio_seek', 'dio_stat', 'dio_tcsetattr', 'dio_truncate', 'dio_write', 'dir', 'eio_busy', 'eio_cancel', 'eio_chmod', 'eio_chown', 'eio_close', 'eio_custom', 'eio_dup2', 'eio_fallocate', 'eio_fchmod', 'eio_fchown', 'eio_fdatasync', 'eio_fstat', 'eio_fstatvfs', 'eio_fsync', 'eio_ftruncate', 'eio_futime', 'eio_get_last_error', 'eio_grp', 'eio_grp_add', 'eio_grp_cancel', 'eio_grp_limit', 'eio_link', 'eio_lstat', 'eio_mkdir', 'eio_mknod', 'eio_nop', 'eio_open', 'eio_read', 'eio_readahead', 'eio_readdir', 'eio_readlink', 'eio_realpath', 'eio_rename', 'eio_rmdir', 'eio_seek', 'eio_sendfile', 'eio_stat', 'eio_statvfs', 'eio_symlink', 'eio_sync', 'eio_sync_file_range', 'eio_syncfs', 'eio_truncate', 'eio_unlink', 'eio_utime', 'eio_write', 'enchant_broker_describe', 'enchant_broker_dict_exists', 'enchant_broker_free', 'enchant_broker_free_dict', 'enchant_broker_get_dict_path', 'enchant_broker_get_error', 'enchant_broker_init', 'enchant_broker_list_dicts', 'enchant_broker_request_dict', 'enchant_broker_request_pwl_dict', 'enchant_broker_set_dict_path', 'enchant_broker_set_ordering', 'enchant_dict_add_to_personal', 'enchant_dict_add_to_session', 'enchant_dict_check', 'enchant_dict_describe', 'enchant_dict_get_error', 'enchant_dict_is_in_session', 'enchant_dict_quick_check', 'enchant_dict_store_replacement', 'enchant_dict_suggest', 'event_add', 'event_base_free', 'event_base_loop', 'event_base_loopbreak', 'event_base_loopexit', 'event_base_new', 'event_base_priority_init', 'event_base_reinit', 'event_base_set', 'event_buffer_base_set', 'event_buffer_disable', 'event_buffer_enable', 'event_buffer_fd_set', 'event_buffer_free', 'event_buffer_new', 'event_buffer_priority_set', 'event_buffer_read', 'event_buffer_set_callback', 'event_buffer_timeout_set', 'event_buffer_watermark_set', 'event_buffer_write', 'event_del', 'event_free', 'event_new', 'event_priority_set', 'event_set', 'event_timer_add', 'event_timer_del', 'event_timer_pending', 'event_timer_set', 'expect_expectl', 'expect_popen', 'fam_cancel_monitor', 'fam_close', 'fam_monitor_collection', 'fam_monitor_directory', 'fam_monitor_file', 'fam_next_event', 'fam_open', 'fam_pending', 'fam_resume_monitor', 'fam_suspend_monitor', 'fann_cascadetrain_on_data', 'fann_cascadetrain_on_file', 'fann_clear_scaling_params', 'fann_copy', 'fann_create_from_file', 'fann_create_shortcut_array', 'fann_create_standard', 'fann_create_standard_array', 'fann_create_train', 'fann_create_train_from_callback', 'fann_descale_input', 'fann_descale_output', 'fann_descale_train', 'fann_destroy', 'fann_destroy_train', 'fann_duplicate_train_data', 'fann_get_MSE', 'fann_get_activation_function', 'fann_get_activation_steepness', 'fann_get_bias_array', 'fann_get_bit_fail', 'fann_get_bit_fail_limit', 'fann_get_cascade_activation_functions', 'fann_get_cascade_activation_functions_count', 'fann_get_cascade_activation_steepnesses', 'fann_get_cascade_activation_steepnesses_count', 'fann_get_cascade_candidate_change_fraction', 'fann_get_cascade_candidate_limit', 'fann_get_cascade_candidate_stagnation_epochs', 'fann_get_cascade_max_cand_epochs', 'fann_get_cascade_max_out_epochs', 'fann_get_cascade_min_cand_epochs', 'fann_get_cascade_min_out_epochs', 'fann_get_cascade_num_candidate_groups', 'fann_get_cascade_num_candidates', 'fann_get_cascade_output_change_fraction', 'fann_get_cascade_output_stagnation_epochs', 'fann_get_cascade_weight_multiplier', 'fann_get_connection_array', 'fann_get_connection_rate', 'fann_get_errno', 'fann_get_errstr', 'fann_get_layer_array', 'fann_get_learning_momentum', 'fann_get_learning_rate', 'fann_get_network_type', 'fann_get_num_input', 'fann_get_num_layers', 'fann_get_num_output', 'fann_get_quickprop_decay', 'fann_get_quickprop_mu', 'fann_get_rprop_decrease_factor', 'fann_get_rprop_delta_max', 'fann_get_rprop_delta_min', 'fann_get_rprop_delta_zero', 'fann_get_rprop_increase_factor', 'fann_get_sarprop_step_error_shift', 'fann_get_sarprop_step_error_threshold_factor', 'fann_get_sarprop_temperature', 'fann_get_sarprop_weight_decay_shift', 'fann_get_total_connections', 'fann_get_total_neurons', 'fann_get_train_error_function', 'fann_get_train_stop_function', 'fann_get_training_algorithm', 'fann_init_weights', 'fann_length_train_data', 'fann_merge_train_data', 'fann_num_input_train_data', 'fann_num_output_train_data', 'fann_randomize_weights', 'fann_read_train_from_file', 'fann_reset_errno', 'fann_reset_errstr', 'fann_run', 'fann_save', 'fann_save_train', 'fann_scale_input', 'fann_scale_input_train_data', 'fann_scale_output', 'fann_scale_output_train_data', 'fann_scale_train', 'fann_scale_train_data', 'fann_set_activation_function', 'fann_set_activation_function_hidden', 'fann_set_activation_function_layer', 'fann_set_activation_function_output', 'fann_set_activation_steepness', 'fann_set_activation_steepness_hidden', 'fann_set_activation_steepness_layer', 'fann_set_activation_steepness_output', 'fann_set_bit_fail_limit', 'fann_set_callback', 'fann_set_cascade_activation_functions', 'fann_set_cascade_activation_steepnesses', 'fann_set_cascade_candidate_change_fraction', 'fann_set_cascade_candidate_limit', 'fann_set_cascade_candidate_stagnation_epochs', 'fann_set_cascade_max_cand_epochs', 'fann_set_cascade_max_out_epochs', 'fann_set_cascade_min_cand_epochs', 'fann_set_cascade_min_out_epochs', 'fann_set_cascade_num_candidate_groups', 'fann_set_cascade_output_change_fraction', 'fann_set_cascade_output_stagnation_epochs', 'fann_set_cascade_weight_multiplier', 'fann_set_error_log', 'fann_set_input_scaling_params', 'fann_set_learning_momentum', 'fann_set_learning_rate', 'fann_set_output_scaling_params', 'fann_set_quickprop_decay', 'fann_set_quickprop_mu', 'fann_set_rprop_decrease_factor', 'fann_set_rprop_delta_max', 'fann_set_rprop_delta_min', 'fann_set_rprop_delta_zero', 'fann_set_rprop_increase_factor', 'fann_set_sarprop_step_error_shift', 'fann_set_sarprop_step_error_threshold_factor', 'fann_set_sarprop_temperature', 'fann_set_sarprop_weight_decay_shift', 'fann_set_scaling_params', 'fann_set_train_error_function', 'fann_set_train_stop_function', 'fann_set_training_algorithm', 'fann_set_weight', 'fann_set_weight_array', 'fann_shuffle_train_data', 'fann_subset_train_data', 'fann_test', 'fann_test_data', 'fann_train', 'fann_train_epoch', 'fann_train_on_data', 'fann_train_on_file', 'fbsql_affected_rows', 'fbsql_autocommit', 'fbsql_blob_size', 'fbsql_change_user', 'fbsql_clob_size', 'fbsql_close', 'fbsql_commit', 'fbsql_connect', 'fbsql_create_blob', 'fbsql_create_clob', 'fbsql_create_db', 'fbsql_data_seek', 'fbsql_database', 'fbsql_database_password', 'fbsql_db_query', 'fbsql_db_status', 'fbsql_drop_db', 'fbsql_errno', 'fbsql_error', 'fbsql_fetch_array', 'fbsql_fetch_assoc', 'fbsql_fetch_field', 'fbsql_fetch_lengths', 'fbsql_fetch_object', 'fbsql_fetch_row', 'fbsql_field_flags', 'fbsql_field_len', 'fbsql_field_name', 'fbsql_field_seek', 'fbsql_field_table', 'fbsql_field_type', 'fbsql_free_result', 'fbsql_get_autostart_info', 'fbsql_hostname', 'fbsql_insert_id', 'fbsql_list_dbs', 'fbsql_list_fields', 'fbsql_list_tables', 'fbsql_next_result', 'fbsql_num_fields', 'fbsql_num_rows', 'fbsql_password', 'fbsql_pconnect', 'fbsql_query', 'fbsql_read_blob', 'fbsql_read_clob', 'fbsql_result', 'fbsql_rollback', 'fbsql_rows_fetched', 'fbsql_select_db', 'fbsql_set_characterset', 'fbsql_set_lob_mode', 'fbsql_set_password', 'fbsql_set_transaction', 'fbsql_start_db', 'fbsql_stop_db', 'fbsql_table_name', 'fbsql_username', 'fclose', 'fdf_add_doc_javascript', 'fdf_add_template', 'fdf_close', 'fdf_create', 'fdf_enum_values', 'fdf_get_ap', 'fdf_get_attachment', 'fdf_get_encoding', 'fdf_get_file', 'fdf_get_flags', 'fdf_get_opt', 'fdf_get_status', 'fdf_get_value', 'fdf_get_version', 'fdf_next_field_name', 'fdf_open', 'fdf_open_string', 'fdf_remove_item', 'fdf_save', 'fdf_save_string', 'fdf_set_ap', 'fdf_set_encoding', 'fdf_set_file', 'fdf_set_flags', 'fdf_set_javascript_action', 'fdf_set_on_import_javascript', 'fdf_set_opt', 'fdf_set_status', 'fdf_set_submit_form_action', 'fdf_set_target_frame', 'fdf_set_value', 'fdf_set_version', 'feof', 'fflush', 'ffmpeg_frame::__construct', 'ffmpeg_frame::toGDImage', 'fgetc', 'fgetcsv', 'fgets', 'fgetss', 'file', 'file_get_contents', 'file_put_contents', 'finfo::buffer', 'finfo::file', 'finfo_buffer', 'finfo_close', 'finfo_file', 'finfo_open', 'finfo_set_flags', 'flock', 'fopen', 'fpassthru', 'fprintf', 'fputcsv', 'fputs', 'fread', 'fscanf', 'fseek', 'fstat', 'ftell', 'ftp_alloc', 'ftp_append', 'ftp_cdup', 'ftp_chdir', 'ftp_chmod', 'ftp_close', 'ftp_delete', 'ftp_exec', 'ftp_fget', 'ftp_fput', 'ftp_get', 'ftp_get_option', 'ftp_login', 'ftp_mdtm', 'ftp_mkdir', 'ftp_mlsd', 'ftp_nb_continue', 'ftp_nb_fget', 'ftp_nb_fput', 'ftp_nb_get', 'ftp_nb_put', 'ftp_nlist', 'ftp_pasv', 'ftp_put', 'ftp_pwd', 'ftp_quit', 'ftp_raw', 'ftp_rawlist', 'ftp_rename', 'ftp_rmdir', 'ftp_set_option', 'ftp_site', 'ftp_size', 'ftp_systype', 'ftruncate', 'fwrite', 'get_resource_type', 'gmp_div', 'gnupg::init', 'gnupg_adddecryptkey', 'gnupg_addencryptkey', 'gnupg_addsignkey', 'gnupg_cleardecryptkeys', 'gnupg_clearencryptkeys', 'gnupg_clearsignkeys', 'gnupg_decrypt', 'gnupg_decryptverify', 'gnupg_encrypt', 'gnupg_encryptsign', 'gnupg_export', 'gnupg_geterror', 'gnupg_getprotocol', 'gnupg_import', 'gnupg_init', 'gnupg_keyinfo', 'gnupg_setarmor', 'gnupg_seterrormode', 'gnupg_setsignmode', 'gnupg_sign', 'gnupg_verify', 'gupnp_context_get_host_ip', 'gupnp_context_get_port', 'gupnp_context_get_subscription_timeout', 'gupnp_context_host_path', 'gupnp_context_new', 'gupnp_context_set_subscription_timeout', 'gupnp_context_timeout_add', 'gupnp_context_unhost_path', 'gupnp_control_point_browse_start', 'gupnp_control_point_browse_stop', 'gupnp_control_point_callback_set', 'gupnp_control_point_new', 'gupnp_device_action_callback_set', 'gupnp_device_info_get', 'gupnp_device_info_get_service', 'gupnp_root_device_get_available', 'gupnp_root_device_get_relative_location', 'gupnp_root_device_new', 'gupnp_root_device_set_available', 'gupnp_root_device_start', 'gupnp_root_device_stop', 'gupnp_service_action_get', 'gupnp_service_action_return', 'gupnp_service_action_return_error', 'gupnp_service_action_set', 'gupnp_service_freeze_notify', 'gupnp_service_info_get', 'gupnp_service_info_get_introspection', 'gupnp_service_introspection_get_state_variable', 'gupnp_service_notify', 'gupnp_service_proxy_action_get', 'gupnp_service_proxy_action_set', 'gupnp_service_proxy_add_notify', 'gupnp_service_proxy_callback_set', 'gupnp_service_proxy_get_subscribed', 'gupnp_service_proxy_remove_notify', 'gupnp_service_proxy_send_action', 'gupnp_service_proxy_set_subscribed', 'gupnp_service_thaw_notify', 'gzclose', 'gzeof', 'gzgetc', 'gzgets', 'gzgetss', 'gzpassthru', 'gzputs', 'gzread', 'gzrewind', 'gzseek', 'gztell', 'gzwrite', 'hash_update_stream', 'PHPUnit\\http\\Env\\Response::send', 'http_get_request_body_stream', 'ibase_add_user', 'ibase_affected_rows', 'ibase_backup', 'ibase_blob_add', 'ibase_blob_cancel', 'ibase_blob_close', 'ibase_blob_create', 'ibase_blob_get', 'ibase_blob_open', 'ibase_close', 'ibase_commit', 'ibase_commit_ret', 'ibase_connect', 'ibase_db_info', 'ibase_delete_user', 'ibase_drop_db', 'ibase_execute', 'ibase_fetch_assoc', 'ibase_fetch_object', 'ibase_fetch_row', 'ibase_field_info', 'ibase_free_event_handler', 'ibase_free_query', 'ibase_free_result', 'ibase_gen_id', 'ibase_maintain_db', 'ibase_modify_user', 'ibase_name_result', 'ibase_num_fields', 'ibase_num_params', 'ibase_param_info', 'ibase_pconnect', 'ibase_prepare', 'ibase_query', 'ibase_restore', 'ibase_rollback', 'ibase_rollback_ret', 'ibase_server_info', 'ibase_service_attach', 'ibase_service_detach', 'ibase_set_event_handler', 'ibase_trans', 'ifx_affected_rows', 'ifx_close', 'ifx_connect', 'ifx_do', 'ifx_error', 'ifx_fetch_row', 'ifx_fieldproperties', 'ifx_fieldtypes', 'ifx_free_result', 'ifx_getsqlca', 'ifx_htmltbl_result', 'ifx_num_fields', 'ifx_num_rows', 'ifx_pconnect', 'ifx_prepare', 'ifx_query', 'image2wbmp', 'imageaffine', 'imagealphablending', 'imageantialias', 'imagearc', 'imagebmp', 'imagechar', 'imagecharup', 'imagecolorallocate', 'imagecolorallocatealpha', 'imagecolorat', 'imagecolorclosest', 'imagecolorclosestalpha', 'imagecolorclosesthwb', 'imagecolordeallocate', 'imagecolorexact', 'imagecolorexactalpha', 'imagecolormatch', 'imagecolorresolve', 'imagecolorresolvealpha', 'imagecolorset', 'imagecolorsforindex', 'imagecolorstotal', 'imagecolortransparent', 'imageconvolution', 'imagecopy', 'imagecopymerge', 'imagecopymergegray', 'imagecopyresampled', 'imagecopyresized', 'imagecrop', 'imagecropauto', 'imagedashedline', 'imagedestroy', 'imageellipse', 'imagefill', 'imagefilledarc', 'imagefilledellipse', 'imagefilledpolygon', 'imagefilledrectangle', 'imagefilltoborder', 'imagefilter', 'imageflip', 'imagefttext', 'imagegammacorrect', 'imagegd', 'imagegd2', 'imagegetclip', 'imagegif', 'imagegrabscreen', 'imagegrabwindow', 'imageinterlace', 'imageistruecolor', 'imagejpeg', 'imagelayereffect', 'imageline', 'imageopenpolygon', 'imagepalettecopy', 'imagepalettetotruecolor', 'imagepng', 'imagepolygon', 'imagepsencodefont', 'imagepsextendfont', 'imagepsfreefont', 'imagepsloadfont', 'imagepsslantfont', 'imagepstext', 'imagerectangle', 'imageresolution', 'imagerotate', 'imagesavealpha', 'imagescale', 'imagesetbrush', 'imagesetclip', 'imagesetinterpolation', 'imagesetpixel', 'imagesetstyle', 'imagesetthickness', 'imagesettile', 'imagestring', 'imagestringup', 'imagesx', 'imagesy', 'imagetruecolortopalette', 'imagettftext', 'imagewbmp', 'imagewebp', 'imagexbm', 'imap_append', 'imap_body', 'imap_bodystruct', 'imap_check', 'imap_clearflag_full', 'imap_close', 'imap_create', 'imap_createmailbox', 'imap_delete', 'imap_deletemailbox', 'imap_expunge', 'imap_fetch_overview', 'imap_fetchbody', 'imap_fetchheader', 'imap_fetchmime', 'imap_fetchstructure', 'imap_fetchtext', 'imap_gc', 'imap_get_quota', 'imap_get_quotaroot', 'imap_getacl', 'imap_getmailboxes', 'imap_getsubscribed', 'imap_header', 'imap_headerinfo', 'imap_headers', 'imap_list', 'imap_listmailbox', 'imap_listscan', 'imap_listsubscribed', 'imap_lsub', 'imap_mail_copy', 'imap_mail_move', 'imap_mailboxmsginfo', 'imap_msgno', 'imap_num_msg', 'imap_num_recent', 'imap_ping', 'imap_rename', 'imap_renamemailbox', 'imap_reopen', 'imap_savebody', 'imap_scan', 'imap_scanmailbox', 'imap_search', 'imap_set_quota', 'imap_setacl', 'imap_setflag_full', 'imap_sort', 'imap_status', 'imap_subscribe', 'imap_thread', 'imap_uid', 'imap_undelete', 'imap_unsubscribe', 'inflate_add', 'inflate_get_read_len', 'inflate_get_status', 'ingres_autocommit', 'ingres_autocommit_state', 'ingres_charset', 'ingres_close', 'ingres_commit', 'ingres_connect', 'ingres_cursor', 'ingres_errno', 'ingres_error', 'ingres_errsqlstate', 'ingres_escape_string', 'ingres_execute', 'ingres_fetch_array', 'ingres_fetch_assoc', 'ingres_fetch_object', 'ingres_fetch_proc_return', 'ingres_fetch_row', 'ingres_field_length', 'ingres_field_name', 'ingres_field_nullable', 'ingres_field_precision', 'ingres_field_scale', 'ingres_field_type', 'ingres_free_result', 'ingres_next_error', 'ingres_num_fields', 'ingres_num_rows', 'ingres_pconnect', 'ingres_prepare', 'ingres_query', 'ingres_result_seek', 'ingres_rollback', 'ingres_set_environment', 'ingres_unbuffered_query', 'inotify_add_watch', 'inotify_init', 'inotify_queue_len', 'inotify_read', 'inotify_rm_watch', 'kadm5_chpass_principal', 'kadm5_create_principal', 'kadm5_delete_principal', 'kadm5_destroy', 'kadm5_flush', 'kadm5_get_policies', 'kadm5_get_principal', 'kadm5_get_principals', 'kadm5_init_with_password', 'kadm5_modify_principal', 'ldap_add', 'ldap_bind', 'ldap_close', 'ldap_compare', 'ldap_control_paged_result', 'ldap_control_paged_result_response', 'ldap_count_entries', 'ldap_delete', 'ldap_errno', 'ldap_error', 'ldap_exop', 'ldap_exop_passwd', 'ldap_exop_refresh', 'ldap_exop_whoami', 'ldap_first_attribute', 'ldap_first_entry', 'ldap_first_reference', 'ldap_free_result', 'ldap_get_attributes', 'ldap_get_dn', 'ldap_get_entries', 'ldap_get_option', 'ldap_get_values', 'ldap_get_values_len', 'ldap_mod_add', 'ldap_mod_del', 'ldap_mod_replace', 'ldap_modify', 'ldap_modify_batch', 'ldap_next_attribute', 'ldap_next_entry', 'ldap_next_reference', 'ldap_parse_exop', 'ldap_parse_reference', 'ldap_parse_result', 'ldap_rename', 'ldap_sasl_bind', 'ldap_set_option', 'ldap_set_rebind_proc', 'ldap_sort', 'ldap_start_tls', 'ldap_unbind', 'libxml_set_streams_context', 'm_checkstatus', 'm_completeauthorizations', 'm_connect', 'm_connectionerror', 'm_deletetrans', 'm_destroyconn', 'm_getcell', 'm_getcellbynum', 'm_getcommadelimited', 'm_getheader', 'm_initconn', 'm_iscommadelimited', 'm_maxconntimeout', 'm_monitor', 'm_numcolumns', 'm_numrows', 'm_parsecommadelimited', 'm_responsekeys', 'm_responseparam', 'm_returnstatus', 'm_setblocking', 'm_setdropfile', 'm_setip', 'm_setssl', 'm_setssl_cafile', 'm_setssl_files', 'm_settimeout', 'm_transactionssent', 'm_transinqueue', 'm_transkeyval', 'm_transnew', 'm_transsend', 'm_validateidentifier', 'm_verifyconnection', 'm_verifysslcert', 'mailparse_determine_best_xfer_encoding', 'mailparse_msg_create', 'mailparse_msg_extract_part', 'mailparse_msg_extract_part_file', 'mailparse_msg_extract_whole_part_file', 'mailparse_msg_free', 'mailparse_msg_get_part', 'mailparse_msg_get_part_data', 'mailparse_msg_get_structure', 'mailparse_msg_parse', 'mailparse_msg_parse_file', 'mailparse_stream_encode', 'mailparse_uudecode_all', 'maxdb::use_result', 'maxdb_affected_rows', 'maxdb_connect', 'maxdb_disable_rpl_parse', 'maxdb_dump_debug_info', 'maxdb_embedded_connect', 'maxdb_enable_reads_from_master', 'maxdb_enable_rpl_parse', 'maxdb_errno', 'maxdb_error', 'maxdb_fetch_lengths', 'maxdb_field_tell', 'maxdb_get_host_info', 'maxdb_get_proto_info', 'maxdb_get_server_info', 'maxdb_get_server_version', 'maxdb_info', 'maxdb_init', 'maxdb_insert_id', 'maxdb_master_query', 'maxdb_more_results', 'maxdb_next_result', 'maxdb_num_fields', 'maxdb_num_rows', 'maxdb_rpl_parse_enabled', 'maxdb_rpl_probe', 'maxdb_select_db', 'maxdb_sqlstate', 'maxdb_stmt::result_metadata', 'maxdb_stmt_affected_rows', 'maxdb_stmt_errno', 'maxdb_stmt_error', 'maxdb_stmt_num_rows', 'maxdb_stmt_param_count', 'maxdb_stmt_result_metadata', 'maxdb_stmt_sqlstate', 'maxdb_thread_id', 'maxdb_use_result', 'maxdb_warning_count', 'mcrypt_enc_get_algorithms_name', 'mcrypt_enc_get_block_size', 'mcrypt_enc_get_iv_size', 'mcrypt_enc_get_key_size', 'mcrypt_enc_get_modes_name', 'mcrypt_enc_get_supported_key_sizes', 'mcrypt_enc_is_block_algorithm', 'mcrypt_enc_is_block_algorithm_mode', 'mcrypt_enc_is_block_mode', 'mcrypt_enc_self_test', 'mcrypt_generic', 'mcrypt_generic_deinit', 'mcrypt_generic_end', 'mcrypt_generic_init', 'mcrypt_module_close', 'mcrypt_module_open', 'mdecrypt_generic', 'mkdir', 'mqseries_back', 'mqseries_begin', 'mqseries_close', 'mqseries_cmit', 'mqseries_conn', 'mqseries_connx', 'mqseries_disc', 'mqseries_get', 'mqseries_inq', 'mqseries_open', 'mqseries_put', 'mqseries_put1', 'mqseries_set', 'msg_get_queue', 'msg_receive', 'msg_remove_queue', 'msg_send', 'msg_set_queue', 'msg_stat_queue', 'msql_affected_rows', 'msql_close', 'msql_connect', 'msql_create_db', 'msql_data_seek', 'msql_db_query', 'msql_drop_db', 'msql_fetch_array', 'msql_fetch_field', 'msql_fetch_object', 'msql_fetch_row', 'msql_field_flags', 'msql_field_len', 'msql_field_name', 'msql_field_seek', 'msql_field_table', 'msql_field_type', 'msql_free_result', 'msql_list_dbs', 'msql_list_fields', 'msql_list_tables', 'msql_num_fields', 'msql_num_rows', 'msql_pconnect', 'msql_query', 'msql_result', 'msql_select_db', 'mssql_bind', 'mssql_close', 'mssql_connect', 'mssql_data_seek', 'mssql_execute', 'mssql_fetch_array', 'mssql_fetch_assoc', 'mssql_fetch_batch', 'mssql_fetch_field', 'mssql_fetch_object', 'mssql_fetch_row', 'mssql_field_length', 'mssql_field_name', 'mssql_field_seek', 'mssql_field_type', 'mssql_free_result', 'mssql_free_statement', 'mssql_init', 'mssql_next_result', 'mssql_num_fields', 'mssql_num_rows', 'mssql_pconnect', 'mssql_query', 'mssql_result', 'mssql_rows_affected', 'mssql_select_db', 'mysql_affected_rows', 'mysql_client_encoding', 'mysql_close', 'mysql_connect', 'mysql_create_db', 'mysql_data_seek', 'mysql_db_name', 'mysql_db_query', 'mysql_drop_db', 'mysql_errno', 'mysql_error', 'mysql_fetch_array', 'mysql_fetch_assoc', 'mysql_fetch_field', 'mysql_fetch_lengths', 'mysql_fetch_object', 'mysql_fetch_row', 'mysql_field_flags', 'mysql_field_len', 'mysql_field_name', 'mysql_field_seek', 'mysql_field_table', 'mysql_field_type', 'mysql_free_result', 'mysql_get_host_info', 'mysql_get_proto_info', 'mysql_get_server_info', 'mysql_info', 'mysql_insert_id', 'mysql_list_dbs', 'mysql_list_fields', 'mysql_list_processes', 'mysql_list_tables', 'mysql_num_fields', 'mysql_num_rows', 'mysql_pconnect', 'mysql_ping', 'mysql_query', 'mysql_real_escape_string', 'mysql_result', 'mysql_select_db', 'mysql_set_charset', 'mysql_stat', 'mysql_tablename', 'mysql_thread_id', 'mysql_unbuffered_query', 'mysqlnd_uh_convert_to_mysqlnd', 'ncurses_bottom_panel', 'ncurses_del_panel', 'ncurses_delwin', 'ncurses_getmaxyx', 'ncurses_getyx', 'ncurses_hide_panel', 'ncurses_keypad', 'ncurses_meta', 'ncurses_move_panel', 'ncurses_mvwaddstr', 'ncurses_new_panel', 'ncurses_newpad', 'ncurses_newwin', 'ncurses_panel_above', 'ncurses_panel_below', 'ncurses_panel_window', 'ncurses_pnoutrefresh', 'ncurses_prefresh', 'ncurses_replace_panel', 'ncurses_show_panel', 'ncurses_top_panel', 'ncurses_waddch', 'ncurses_waddstr', 'ncurses_wattroff', 'ncurses_wattron', 'ncurses_wattrset', 'ncurses_wborder', 'ncurses_wclear', 'ncurses_wcolor_set', 'ncurses_werase', 'ncurses_wgetch', 'ncurses_whline', 'ncurses_wmouse_trafo', 'ncurses_wmove', 'ncurses_wnoutrefresh', 'ncurses_wrefresh', 'ncurses_wstandend', 'ncurses_wstandout', 'ncurses_wvline', 'newt_button', 'newt_button_bar', 'newt_checkbox', 'newt_checkbox_get_value', 'newt_checkbox_set_flags', 'newt_checkbox_set_value', 'newt_checkbox_tree', 'newt_checkbox_tree_add_item', 'newt_checkbox_tree_find_item', 'newt_checkbox_tree_get_current', 'newt_checkbox_tree_get_entry_value', 'newt_checkbox_tree_get_multi_selection', 'newt_checkbox_tree_get_selection', 'newt_checkbox_tree_multi', 'newt_checkbox_tree_set_current', 'newt_checkbox_tree_set_entry', 'newt_checkbox_tree_set_entry_value', 'newt_checkbox_tree_set_width', 'newt_compact_button', 'newt_component_add_callback', 'newt_component_takes_focus', 'newt_create_grid', 'newt_draw_form', 'newt_entry', 'newt_entry_get_value', 'newt_entry_set', 'newt_entry_set_filter', 'newt_entry_set_flags', 'newt_form', 'newt_form_add_component', 'newt_form_add_components', 'newt_form_add_hot_key', 'newt_form_destroy', 'newt_form_get_current', 'newt_form_run', 'newt_form_set_background', 'newt_form_set_height', 'newt_form_set_size', 'newt_form_set_timer', 'newt_form_set_width', 'newt_form_watch_fd', 'newt_grid_add_components_to_form', 'newt_grid_basic_window', 'newt_grid_free', 'newt_grid_get_size', 'newt_grid_h_close_stacked', 'newt_grid_h_stacked', 'newt_grid_place', 'newt_grid_set_field', 'newt_grid_simple_window', 'newt_grid_v_close_stacked', 'newt_grid_v_stacked', 'newt_grid_wrapped_window', 'newt_grid_wrapped_window_at', 'newt_label', 'newt_label_set_text', 'newt_listbox', 'newt_listbox_append_entry', 'newt_listbox_clear', 'newt_listbox_clear_selection', 'newt_listbox_delete_entry', 'newt_listbox_get_current', 'newt_listbox_get_selection', 'newt_listbox_insert_entry', 'newt_listbox_item_count', 'newt_listbox_select_item', 'newt_listbox_set_current', 'newt_listbox_set_current_by_key', 'newt_listbox_set_data', 'newt_listbox_set_entry', 'newt_listbox_set_width', 'newt_listitem', 'newt_listitem_get_data', 'newt_listitem_set', 'newt_radio_get_current', 'newt_radiobutton', 'newt_run_form', 'newt_scale', 'newt_scale_set', 'newt_scrollbar_set', 'newt_textbox', 'newt_textbox_get_num_lines', 'newt_textbox_reflowed', 'newt_textbox_set_height', 'newt_textbox_set_text', 'newt_vertical_scrollbar', 'oci_bind_array_by_name', 'oci_bind_by_name', 'oci_cancel', 'oci_close', 'oci_commit', 'oci_connect', 'oci_define_by_name', 'oci_error', 'oci_execute', 'oci_fetch', 'oci_fetch_all', 'oci_fetch_array', 'oci_fetch_assoc', 'oci_fetch_object', 'oci_fetch_row', 'oci_field_is_null', 'oci_field_name', 'oci_field_precision', 'oci_field_scale', 'oci_field_size', 'oci_field_type', 'oci_field_type_raw', 'oci_free_cursor', 'oci_free_statement', 'oci_get_implicit_resultset', 'oci_new_collection', 'oci_new_connect', 'oci_new_cursor', 'oci_new_descriptor', 'oci_num_fields', 'oci_num_rows', 'oci_parse', 'oci_pconnect', 'oci_register_taf_callback', 'oci_result', 'oci_rollback', 'oci_server_version', 'oci_set_action', 'oci_set_client_identifier', 'oci_set_client_info', 'oci_set_module_name', 'oci_set_prefetch', 'oci_statement_type', 'oci_unregister_taf_callback', 'odbc_autocommit', 'odbc_close', 'odbc_columnprivileges', 'odbc_columns', 'odbc_commit', 'odbc_connect', 'odbc_cursor', 'odbc_data_source', 'odbc_do', 'odbc_error', 'odbc_errormsg', 'odbc_exec', 'odbc_execute', 'odbc_fetch_array', 'odbc_fetch_into', 'odbc_fetch_row', 'odbc_field_len', 'odbc_field_name', 'odbc_field_num', 'odbc_field_precision', 'odbc_field_scale', 'odbc_field_type', 'odbc_foreignkeys', 'odbc_free_result', 'odbc_gettypeinfo', 'odbc_next_result', 'odbc_num_fields', 'odbc_num_rows', 'odbc_pconnect', 'odbc_prepare', 'odbc_primarykeys', 'odbc_procedurecolumns', 'odbc_procedures', 'odbc_result', 'odbc_result_all', 'odbc_rollback', 'odbc_setoption', 'odbc_specialcolumns', 'odbc_statistics', 'odbc_tableprivileges', 'odbc_tables', 'openal_buffer_create', 'openal_buffer_data', 'openal_buffer_destroy', 'openal_buffer_get', 'openal_buffer_loadwav', 'openal_context_create', 'openal_context_current', 'openal_context_destroy', 'openal_context_process', 'openal_context_suspend', 'openal_device_close', 'openal_device_open', 'openal_source_create', 'openal_source_destroy', 'openal_source_get', 'openal_source_pause', 'openal_source_play', 'openal_source_rewind', 'openal_source_set', 'openal_source_stop', 'openal_stream', 'opendir', 'openssl_csr_new', 'openssl_dh_compute_key', 'openssl_free_key', 'openssl_pkey_export', 'openssl_pkey_free', 'openssl_pkey_get_details', 'openssl_spki_new', 'openssl_x509_free', 'pclose', 'pfsockopen', 'pg_affected_rows', 'pg_cancel_query', 'pg_client_encoding', 'pg_close', 'pg_connect_poll', 'pg_connection_busy', 'pg_connection_reset', 'pg_connection_status', 'pg_consume_input', 'pg_convert', 'pg_copy_from', 'pg_copy_to', 'pg_dbname', 'pg_delete', 'pg_end_copy', 'pg_escape_bytea', 'pg_escape_identifier', 'pg_escape_literal', 'pg_escape_string', 'pg_execute', 'pg_fetch_all', 'pg_fetch_all_columns', 'pg_fetch_array', 'pg_fetch_assoc', 'pg_fetch_row', 'pg_field_name', 'pg_field_num', 'pg_field_size', 'pg_field_table', 'pg_field_type', 'pg_field_type_oid', 'pg_flush', 'pg_free_result', 'pg_get_notify', 'pg_get_pid', 'pg_get_result', 'pg_host', 'pg_insert', 'pg_last_error', 'pg_last_notice', 'pg_last_oid', 'pg_lo_close', 'pg_lo_create', 'pg_lo_export', 'pg_lo_import', 'pg_lo_open', 'pg_lo_read', 'pg_lo_read_all', 'pg_lo_seek', 'pg_lo_tell', 'pg_lo_truncate', 'pg_lo_unlink', 'pg_lo_write', 'pg_meta_data', 'pg_num_fields', 'pg_num_rows', 'pg_options', 'pg_parameter_status', 'pg_ping', 'pg_port', 'pg_prepare', 'pg_put_line', 'pg_query', 'pg_query_params', 'pg_result_error', 'pg_result_error_field', 'pg_result_seek', 'pg_result_status', 'pg_select', 'pg_send_execute', 'pg_send_prepare', 'pg_send_query', 'pg_send_query_params', 'pg_set_client_encoding', 'pg_set_error_verbosity', 'pg_socket', 'pg_trace', 'pg_transaction_status', 'pg_tty', 'pg_untrace', 'pg_update', 'pg_version', 'php_user_filter::filter', 'proc_close', 'proc_get_status', 'proc_terminate', 'ps_add_bookmark', 'ps_add_launchlink', 'ps_add_locallink', 'ps_add_note', 'ps_add_pdflink', 'ps_add_weblink', 'ps_arc', 'ps_arcn', 'ps_begin_page', 'ps_begin_pattern', 'ps_begin_template', 'ps_circle', 'ps_clip', 'ps_close', 'ps_close_image', 'ps_closepath', 'ps_closepath_stroke', 'ps_continue_text', 'ps_curveto', 'ps_delete', 'ps_end_page', 'ps_end_pattern', 'ps_end_template', 'ps_fill', 'ps_fill_stroke', 'ps_findfont', 'ps_get_buffer', 'ps_get_parameter', 'ps_get_value', 'ps_hyphenate', 'ps_include_file', 'ps_lineto', 'ps_makespotcolor', 'ps_moveto', 'ps_new', 'ps_open_file', 'ps_open_image', 'ps_open_image_file', 'ps_open_memory_image', 'ps_place_image', 'ps_rect', 'ps_restore', 'ps_rotate', 'ps_save', 'ps_scale', 'ps_set_border_color', 'ps_set_border_dash', 'ps_set_border_style', 'ps_set_info', 'ps_set_parameter', 'ps_set_text_pos', 'ps_set_value', 'ps_setcolor', 'ps_setdash', 'ps_setflat', 'ps_setfont', 'ps_setgray', 'ps_setlinecap', 'ps_setlinejoin', 'ps_setlinewidth', 'ps_setmiterlimit', 'ps_setoverprintmode', 'ps_setpolydash', 'ps_shading', 'ps_shading_pattern', 'ps_shfill', 'ps_show', 'ps_show2', 'ps_show_boxed', 'ps_show_xy', 'ps_show_xy2', 'ps_string_geometry', 'ps_stringwidth', 'ps_stroke', 'ps_symbol', 'ps_symbol_name', 'ps_symbol_width', 'ps_translate', 'px_close', 'px_create_fp', 'px_date2string', 'px_delete', 'px_delete_record', 'px_get_field', 'px_get_info', 'px_get_parameter', 'px_get_record', 'px_get_schema', 'px_get_value', 'px_insert_record', 'px_new', 'px_numfields', 'px_numrecords', 'px_open_fp', 'px_put_record', 'px_retrieve_record', 'px_set_blob_file', 'px_set_parameter', 'px_set_tablename', 'px_set_targetencoding', 'px_set_value', 'px_timestamp2string', 'px_update_record', 'radius_acct_open', 'radius_add_server', 'radius_auth_open', 'radius_close', 'radius_config', 'radius_create_request', 'radius_demangle', 'radius_demangle_mppe_key', 'radius_get_attr', 'radius_put_addr', 'radius_put_attr', 'radius_put_int', 'radius_put_string', 'radius_put_vendor_addr', 'radius_put_vendor_attr', 'radius_put_vendor_int', 'radius_put_vendor_string', 'radius_request_authenticator', 'radius_salt_encrypt_attr', 'radius_send_request', 'radius_server_secret', 'radius_strerror', 'readdir', 'readfile', 'recode_file', 'rename', 'rewind', 'rewinddir', 'rmdir', 'rpm_close', 'rpm_get_tag', 'rpm_open', 'sapi_windows_vt100_support', 'scandir', 'sem_acquire', 'sem_get', 'sem_release', 'sem_remove', 'set_file_buffer', 'shm_attach', 'shm_detach', 'shm_get_var', 'shm_has_var', 'shm_put_var', 'shm_remove', 'shm_remove_var', 'shmop_close', 'shmop_delete', 'shmop_open', 'shmop_read', 'shmop_size', 'shmop_write', 'socket_accept', 'socket_addrinfo_bind', 'socket_addrinfo_connect', 'socket_addrinfo_explain', 'socket_bind', 'socket_clear_error', 'socket_close', 'socket_connect', 'socket_export_stream', 'socket_get_option', 'socket_get_status', 'socket_getopt', 'socket_getpeername', 'socket_getsockname', 'socket_import_stream', 'socket_last_error', 'socket_listen', 'socket_read', 'socket_recv', 'socket_recvfrom', 'socket_recvmsg', 'socket_send', 'socket_sendmsg', 'socket_sendto', 'socket_set_block', 'socket_set_blocking', 'socket_set_nonblock', 'socket_set_option', 'socket_set_timeout', 'socket_shutdown', 'socket_write', 'sqlite_close', 'sqlite_fetch_string', 'sqlite_has_more', 'sqlite_open', 'sqlite_popen', 'sqlsrv_begin_transaction', 'sqlsrv_cancel', 'sqlsrv_client_info', 'sqlsrv_close', 'sqlsrv_commit', 'sqlsrv_connect', 'sqlsrv_execute', 'sqlsrv_fetch', 'sqlsrv_fetch_array', 'sqlsrv_fetch_object', 'sqlsrv_field_metadata', 'sqlsrv_free_stmt', 'sqlsrv_get_field', 'sqlsrv_has_rows', 'sqlsrv_next_result', 'sqlsrv_num_fields', 'sqlsrv_num_rows', 'sqlsrv_prepare', 'sqlsrv_query', 'sqlsrv_rollback', 'sqlsrv_rows_affected', 'sqlsrv_send_stream_data', 'sqlsrv_server_info', 'ssh2_auth_agent', 'ssh2_auth_hostbased_file', 'ssh2_auth_none', 'ssh2_auth_password', 'ssh2_auth_pubkey_file', 'ssh2_disconnect', 'ssh2_exec', 'ssh2_fetch_stream', 'ssh2_fingerprint', 'ssh2_methods_negotiated', 'ssh2_publickey_add', 'ssh2_publickey_init', 'ssh2_publickey_list', 'ssh2_publickey_remove', 'ssh2_scp_recv', 'ssh2_scp_send', 'ssh2_sftp', 'ssh2_sftp_chmod', 'ssh2_sftp_lstat', 'ssh2_sftp_mkdir', 'ssh2_sftp_readlink', 'ssh2_sftp_realpath', 'ssh2_sftp_rename', 'ssh2_sftp_rmdir', 'ssh2_sftp_stat', 'ssh2_sftp_symlink', 'ssh2_sftp_unlink', 'ssh2_shell', 'ssh2_tunnel', 'stomp_connect', 'streamWrapper::stream_cast', 'stream_bucket_append', 'stream_bucket_make_writeable', 'stream_bucket_new', 'stream_bucket_prepend', 'stream_context_create', 'stream_context_get_default', 'stream_context_get_options', 'stream_context_get_params', 'stream_context_set_default', 'stream_context_set_params', 'stream_copy_to_stream', 'stream_encoding', 'stream_filter_append', 'stream_filter_prepend', 'stream_filter_remove', 'stream_get_contents', 'stream_get_line', 'stream_get_meta_data', 'stream_isatty', 'stream_set_blocking', 'stream_set_chunk_size', 'stream_set_read_buffer', 'stream_set_timeout', 'stream_set_write_buffer', 'stream_socket_accept', 'stream_socket_client', 'stream_socket_enable_crypto', 'stream_socket_get_name', 'stream_socket_recvfrom', 'stream_socket_sendto', 'stream_socket_server', 'stream_socket_shutdown', 'stream_supports_lock', 'svn_fs_abort_txn', 'svn_fs_apply_text', 'svn_fs_begin_txn2', 'svn_fs_change_node_prop', 'svn_fs_check_path', 'svn_fs_contents_changed', 'svn_fs_copy', 'svn_fs_delete', 'svn_fs_dir_entries', 'svn_fs_file_contents', 'svn_fs_file_length', 'svn_fs_is_dir', 'svn_fs_is_file', 'svn_fs_make_dir', 'svn_fs_make_file', 'svn_fs_node_created_rev', 'svn_fs_node_prop', 'svn_fs_props_changed', 'svn_fs_revision_prop', 'svn_fs_revision_root', 'svn_fs_txn_root', 'svn_fs_youngest_rev', 'svn_repos_create', 'svn_repos_fs', 'svn_repos_fs_begin_txn_for_commit', 'svn_repos_fs_commit_txn', 'svn_repos_open', 'sybase_affected_rows', 'sybase_close', 'sybase_connect', 'sybase_data_seek', 'sybase_fetch_array', 'sybase_fetch_assoc', 'sybase_fetch_field', 'sybase_fetch_object', 'sybase_fetch_row', 'sybase_field_seek', 'sybase_free_result', 'sybase_num_fields', 'sybase_num_rows', 'sybase_pconnect', 'sybase_query', 'sybase_result', 'sybase_select_db', 'sybase_set_message_handler', 'sybase_unbuffered_query', 'tmpfile', 'udm_add_search_limit', 'udm_alloc_agent', 'udm_alloc_agent_array', 'udm_cat_list', 'udm_cat_path', 'udm_check_charset', 'udm_clear_search_limits', 'udm_crc32', 'udm_errno', 'udm_error', 'udm_find', 'udm_free_agent', 'udm_free_res', 'udm_get_doc_count', 'udm_get_res_field', 'udm_get_res_param', 'udm_hash32', 'udm_load_ispell_data', 'udm_set_agent_param', 'unlink', 'vfprintf', 'w32api_init_dtype', 'wddx_add_vars', 'wddx_packet_end', 'wddx_packet_start', 'xml_get_current_byte_index', 'xml_get_current_column_number', 'xml_get_current_line_number', 'xml_get_error_code', 'xml_parse', 'xml_parse_into_struct', 'xml_parser_create', 'xml_parser_create_ns', 'xml_parser_free', 'xml_parser_get_option', 'xml_parser_set_option', 'xml_set_character_data_handler', 'xml_set_default_handler', 'xml_set_element_handler', 'xml_set_end_namespace_decl_handler', 'xml_set_external_entity_ref_handler', 'xml_set_notation_decl_handler', 'xml_set_object', 'xml_set_processing_instruction_handler', 'xml_set_start_namespace_decl_handler', 'xml_set_unparsed_entity_decl_handler', 'xmlrpc_server_add_introspection_data', 'xmlrpc_server_call_method', 'xmlrpc_server_create', 'xmlrpc_server_destroy', 'xmlrpc_server_register_introspection_callback', 'xmlrpc_server_register_method', 'xmlwriter_end_attribute', 'xmlwriter_end_cdata', 'xmlwriter_end_comment', 'xmlwriter_end_document', 'xmlwriter_end_dtd', 'xmlwriter_end_dtd_attlist', 'xmlwriter_end_dtd_element', 'xmlwriter_end_dtd_entity', 'xmlwriter_end_element', 'xmlwriter_end_pi', 'xmlwriter_flush', 'xmlwriter_full_end_element', 'xmlwriter_open_memory', 'xmlwriter_open_uri', 'xmlwriter_output_memory', 'xmlwriter_set_indent', 'xmlwriter_set_indent_string', 'xmlwriter_start_attribute', 'xmlwriter_start_attribute_ns', 'xmlwriter_start_cdata', 'xmlwriter_start_comment', 'xmlwriter_start_document', 'xmlwriter_start_dtd', 'xmlwriter_start_dtd_attlist', 'xmlwriter_start_dtd_element', 'xmlwriter_start_dtd_entity', 'xmlwriter_start_element', 'xmlwriter_start_element_ns', 'xmlwriter_start_pi', 'xmlwriter_text', 'xmlwriter_write_attribute', 'xmlwriter_write_attribute_ns', 'xmlwriter_write_cdata', 'xmlwriter_write_comment', 'xmlwriter_write_dtd', 'xmlwriter_write_dtd_attlist', 'xmlwriter_write_dtd_element', 'xmlwriter_write_dtd_entity', 'xmlwriter_write_element', 'xmlwriter_write_element_ns', 'xmlwriter_write_pi', 'xmlwriter_write_raw', 'xslt_create', 'yaz_addinfo', 'yaz_ccl_conf', 'yaz_ccl_parse', 'yaz_close', 'yaz_database', 'yaz_element', 'yaz_errno', 'yaz_error', 'yaz_es', 'yaz_es_result', 'yaz_get_option', 'yaz_hits', 'yaz_itemorder', 'yaz_present', 'yaz_range', 'yaz_record', 'yaz_scan', 'yaz_scan_result', 'yaz_schema', 'yaz_search', 'yaz_sort', 'yaz_syntax', 'zip_close', 'zip_entry_close', 'zip_entry_compressedsize', 'zip_entry_compressionmethod', 'zip_entry_filesize', 'zip_entry_name', 'zip_entry_open', 'zip_entry_read', 'zip_open', 'zip_read']; } } sebastian/type @@ -92481,6 +93465,9 @@ final class CallableType extends Type if (count($type->value()) !== 2) { return \false; } + if (!isset($type->value()[0], $type->value()[1])) { + return \false; + } if (!is_object($type->value()[0]) || !is_string($type->value()[1])) { return \false; } @@ -92502,6 +93489,9 @@ final class CallableType extends Type if (count($type->value()) !== 2) { return \false; } + if (!isset($type->value()[0], $type->value()[1])) { + return \false; + } if (!is_string($type->value()[0]) || !is_string($type->value()[1])) { return \false; } @@ -92623,10 +93613,10 @@ declare (strict_types=1); */ namespace PHPUnit\SebastianBergmann\Type; -use function array_unique; use function assert; use function count; use function implode; +use function in_array; use function sort; final class IntersectionType extends Type { @@ -92707,10 +93697,11 @@ final class IntersectionType extends Type $names = []; foreach ($types as $type) { assert($type instanceof ObjectType); - $names[] = $type->className()->qualifiedName(); - } - if (count(array_unique($names)) < count($names)) { - throw new RuntimeException('An intersection type must not contain duplicate types'); + $classQualifiedName = $type->className()->qualifiedName(); + if (in_array($classQualifiedName, $names, \true)) { + throw new RuntimeException('An intersection type must not contain duplicate types'); + } + $names[] = $classQualifiedName; } } } @@ -100269,4 +101260,4 @@ namespace PHPSTORM_META { map([""=>"$0"]) ); } - Ro:^:o875x>MtU)bY!)_iGBMB \ No newline at end of file +RJ _q@jSY i܄ӟ6|4l=ﶉ)z0GBMB \ No newline at end of file From d6acc2878e09c831e5952ac33ad3c97fb0834e46 Mon Sep 17 00:00:00 2001 From: Toon Verwerft Date: Thu, 23 Nov 2023 14:27:56 +0100 Subject: [PATCH 3/4] Fix new CS issues --- phpunit.xml | 2 +- src/Xml/Dom/Builder/attribute.php | 2 +- src/Xml/Dom/Builder/attributes.php | 2 +- src/Xml/Dom/Builder/cdata.php | 2 +- src/Xml/Dom/Builder/element.php | 2 +- src/Xml/Dom/Builder/escaped_value.php | 2 +- src/Xml/Dom/Builder/namespaced_attribute.php | 2 +- src/Xml/Dom/Builder/namespaced_attributes.php | 2 +- src/Xml/Dom/Builder/namespaced_element.php | 2 +- src/Xml/Dom/Builder/nodes.php | 2 +- src/Xml/Dom/Builder/value.php | 2 +- src/Xml/Dom/Builder/xmlns_attribute.php | 2 +- src/Xml/Dom/Builder/xmlns_attributes.php | 2 +- src/Xml/Dom/Configurator/canonicalize.php | 2 +- src/Xml/Dom/Configurator/comparable.php | 2 +- src/Xml/Dom/Configurator/document_uri.php | 2 +- src/Xml/Dom/Configurator/loader.php | 2 +- src/Xml/Dom/Configurator/normalize.php | 2 +- src/Xml/Dom/Configurator/optimize_namespaces.php | 2 +- src/Xml/Dom/Configurator/pretty_print.php | 2 +- src/Xml/Dom/Configurator/traverse.php | 2 +- src/Xml/Dom/Configurator/trim_spaces.php | 2 +- src/Xml/Dom/Configurator/utf8.php | 2 +- src/Xml/Dom/Configurator/validator.php | 2 +- src/Xml/Dom/Document.php | 2 +- src/Xml/Dom/Loader/xml_file_loader.php | 2 +- src/Xml/Dom/Loader/xml_node_loader.php | 2 +- src/Xml/Dom/Loader/xml_string_loader.php | 2 +- src/Xml/Dom/Locator/document_element.php | 2 +- src/Xml/Dom/Locator/elements_with_namespaced_tagname.php | 2 +- src/Xml/Dom/Locator/elements_with_tagname.php | 2 +- src/Xml/Dom/Locator/root_namespace.php | 2 +- src/Xml/Dom/Manipulator/append.php | 2 +- src/Xml/Dom/Mapper/xml_string.php | 2 +- src/Xml/Dom/Mapper/xslt_template.php | 2 +- src/Xml/Dom/Validator/internal_xsd_validator.php | 4 ++-- src/Xml/Dom/Validator/validator_chain.php | 2 +- src/Xml/Dom/Validator/xsd_validator.php | 2 +- src/Xml/Dom/Xpath/Configurator/all_functions.php | 2 +- src/Xml/Dom/Xpath/Configurator/functions.php | 2 +- src/Xml/Dom/Xpath/Configurator/namespaces.php | 2 +- src/Xml/Dom/Xpath/Configurator/php_namespace.php | 2 +- src/Xml/Dom/Xpath/Locator/evaluate.php | 2 +- src/Xml/Dom/Xpath/Locator/query.php | 2 +- src/Xml/Dom/Xpath/Locator/query_single.php | 2 +- src/Xml/Encoding/Internal/Encoder/Builder/children.php | 4 ++-- src/Xml/Encoding/Internal/Encoder/Builder/element.php | 6 +++--- src/Xml/Encoding/Internal/Encoder/Builder/parent_node.php | 2 +- src/Xml/Encoding/Internal/Encoder/Builder/root.php | 2 +- src/Xml/Encoding/Internal/wrap_exception.php | 2 +- src/Xml/Reader/Configurator/parser_options.php | 2 +- src/Xml/Reader/Configurator/xsd_schema.php | 2 +- src/Xml/Reader/Loader/xml_file_loader.php | 2 +- src/Xml/Reader/Loader/xml_string_loader.php | 2 +- src/Xml/Reader/Matcher/all.php | 2 +- src/Xml/Reader/Matcher/any.php | 2 +- src/Xml/Reader/Matcher/attribute_local_name.php | 2 +- src/Xml/Reader/Matcher/attribute_local_value.php | 2 +- src/Xml/Reader/Matcher/attribute_name.php | 2 +- src/Xml/Reader/Matcher/attribute_value.php | 2 +- src/Xml/Reader/Matcher/document_element.php | 2 +- src/Xml/Reader/Matcher/element_local_name.php | 2 +- src/Xml/Reader/Matcher/element_name.php | 2 +- src/Xml/Reader/Matcher/element_position.php | 2 +- src/Xml/Reader/Matcher/namespaced_attribute.php | 2 +- src/Xml/Reader/Matcher/namespaced_attribute_value.php | 2 +- src/Xml/Reader/Matcher/namespaced_element.php | 2 +- src/Xml/Reader/Matcher/nested.php | 2 +- src/Xml/Reader/Matcher/node_attribute.php | 2 +- src/Xml/Reader/Matcher/node_name.php | 2 +- src/Xml/Reader/Matcher/not.php | 2 +- src/Xml/Reader/Matcher/sequence.php | 2 +- src/Xml/Writer/Builder/attribute.php | 2 +- src/Xml/Writer/Builder/attributes.php | 2 +- src/Xml/Writer/Builder/children.php | 2 +- src/Xml/Writer/Builder/document.php | 2 +- src/Xml/Writer/Builder/element.php | 2 +- src/Xml/Writer/Builder/namespace_attribute.php | 2 +- src/Xml/Writer/Builder/prefixed_attribute.php | 2 +- src/Xml/Writer/Builder/prefixed_attributes.php | 2 +- src/Xml/Writer/Builder/prefixed_element.php | 2 +- src/Xml/Writer/Builder/value.php | 2 +- src/Xml/Writer/Configurator/indentation.php | 2 +- src/Xml/Writer/Configurator/open.php | 2 +- src/Xml/Writer/Opener/xml_file_opener.php | 2 +- src/Xml/Xsd/Schema/Manipulator/base_path.php | 2 +- .../Xsd/Schema/Manipulator/overwrite_with_local_files.php | 2 +- src/Xml/Xslt/Configurator/all_functions.php | 2 +- src/Xml/Xslt/Configurator/functions.php | 2 +- src/Xml/Xslt/Configurator/loader.php | 2 +- src/Xml/Xslt/Configurator/parameters.php | 2 +- src/Xml/Xslt/Configurator/profiler.php | 2 +- src/Xml/Xslt/Configurator/security_preferences.php | 2 +- src/Xml/Xslt/Loader/from_template_document.php | 2 +- src/Xml/Xslt/Transformer/document_to_string.php | 2 +- tests/Xml/Reader/Matcher/AbstractMatcherTest.php | 4 ++-- 96 files changed, 101 insertions(+), 101 deletions(-) diff --git a/phpunit.xml b/phpunit.xml index d3c83b4a..1dbb0c76 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -8,7 +8,7 @@ beStrictAboutCoversAnnotation="false" beStrictAboutOutputDuringTests="true" beStrictAboutTodoAnnotatedTests="true" - verbose="false" + verbose="true" > diff --git a/src/Xml/Dom/Builder/attribute.php b/src/Xml/Dom/Builder/attribute.php index 2ec840b9..dee76a31 100644 --- a/src/Xml/Dom/Builder/attribute.php +++ b/src/Xml/Dom/Builder/attribute.php @@ -8,7 +8,7 @@ use DOMElement; /** - * @return \Closure(DOMElement): DOMElement + * @return Closure(DOMElement): DOMElement */ function attribute(string $name, string $value): Closure { diff --git a/src/Xml/Dom/Builder/attributes.php b/src/Xml/Dom/Builder/attributes.php index 04da944f..aaf9dadc 100644 --- a/src/Xml/Dom/Builder/attributes.php +++ b/src/Xml/Dom/Builder/attributes.php @@ -10,7 +10,7 @@ /** * @param array $attributes - * @return \Closure(DOMElement): DOMElement + * @return Closure(DOMElement): DOMElement */ function attributes(array $attributes): Closure { diff --git a/src/Xml/Dom/Builder/cdata.php b/src/Xml/Dom/Builder/cdata.php index 186e387e..a38f6f6b 100644 --- a/src/Xml/Dom/Builder/cdata.php +++ b/src/Xml/Dom/Builder/cdata.php @@ -16,7 +16,7 @@ /** * @param list $configurators * - * @return \Closure(DOMNode): DOMCdataSection + * @return Closure(DOMNode): DOMCdataSection */ function cdata(string $data, ...$configurators): Closure { diff --git a/src/Xml/Dom/Builder/element.php b/src/Xml/Dom/Builder/element.php index 7af8225d..9b777cf5 100644 --- a/src/Xml/Dom/Builder/element.php +++ b/src/Xml/Dom/Builder/element.php @@ -16,7 +16,7 @@ /** * @param list $configurators * - * @return \Closure(DOMNode): DOMElement + * @return Closure(DOMNode): DOMElement */ function element(string $name, callable ...$configurators): Closure { diff --git a/src/Xml/Dom/Builder/escaped_value.php b/src/Xml/Dom/Builder/escaped_value.php index 9c943a5b..d2f91ac6 100644 --- a/src/Xml/Dom/Builder/escaped_value.php +++ b/src/Xml/Dom/Builder/escaped_value.php @@ -8,7 +8,7 @@ use DOMElement; /** - * @return \Closure(DOMElement): DOMElement + * @return Closure(DOMElement): DOMElement */ function escaped_value(string $value): Closure { diff --git a/src/Xml/Dom/Builder/namespaced_attribute.php b/src/Xml/Dom/Builder/namespaced_attribute.php index b3dd3be8..bb2b65d5 100644 --- a/src/Xml/Dom/Builder/namespaced_attribute.php +++ b/src/Xml/Dom/Builder/namespaced_attribute.php @@ -9,7 +9,7 @@ use function VeeWee\Xml\Assertion\assert_strict_prefixed_name; /** - * @return \Closure(DOMElement): DOMElement + * @return Closure(DOMElement): DOMElement */ function namespaced_attribute(string $namespace, string $qualifiedName, string $value): Closure { diff --git a/src/Xml/Dom/Builder/namespaced_attributes.php b/src/Xml/Dom/Builder/namespaced_attributes.php index 7c81bc32..d607154f 100644 --- a/src/Xml/Dom/Builder/namespaced_attributes.php +++ b/src/Xml/Dom/Builder/namespaced_attributes.php @@ -10,7 +10,7 @@ /** * @param array $attributes - * @return \Closure(DOMElement): DOMElement + * @return Closure(DOMElement): DOMElement */ function namespaced_attributes(string $namespace, array $attributes): Closure { diff --git a/src/Xml/Dom/Builder/namespaced_element.php b/src/Xml/Dom/Builder/namespaced_element.php index a43bf099..8cf12ee1 100644 --- a/src/Xml/Dom/Builder/namespaced_element.php +++ b/src/Xml/Dom/Builder/namespaced_element.php @@ -16,7 +16,7 @@ /** * @param list $configurators * - * @return \Closure(DOMNode): DOMElement + * @return Closure(DOMNode): DOMElement */ function namespaced_element(string $namespace, string $qualifiedName, callable ...$configurators): Closure { diff --git a/src/Xml/Dom/Builder/nodes.php b/src/Xml/Dom/Builder/nodes.php index f1629e95..49ff522d 100644 --- a/src/Xml/Dom/Builder/nodes.php +++ b/src/Xml/Dom/Builder/nodes.php @@ -14,7 +14,7 @@ /** * @param list|DOMNode)> $builders * - * @return \Closure(DOMDocument): list + * @return Closure(DOMDocument): list */ function nodes(callable ... $builders): Closure { diff --git a/src/Xml/Dom/Builder/value.php b/src/Xml/Dom/Builder/value.php index f944fd44..28482d69 100644 --- a/src/Xml/Dom/Builder/value.php +++ b/src/Xml/Dom/Builder/value.php @@ -8,7 +8,7 @@ use DOMElement; /** - * @return \Closure(DOMElement): DOMElement + * @return Closure(DOMElement): DOMElement */ function value(string $value): Closure { diff --git a/src/Xml/Dom/Builder/xmlns_attribute.php b/src/Xml/Dom/Builder/xmlns_attribute.php index 74263c08..e7ae6bd2 100644 --- a/src/Xml/Dom/Builder/xmlns_attribute.php +++ b/src/Xml/Dom/Builder/xmlns_attribute.php @@ -10,7 +10,7 @@ use function VeeWee\Xml\Assertion\assert_strict_prefixed_name; /** - * @return \Closure(DOMElement): DOMElement + * @return Closure(DOMElement): DOMElement */ function xmlns_attribute(string $prefix, string $namespaceURI): Closure { diff --git a/src/Xml/Dom/Builder/xmlns_attributes.php b/src/Xml/Dom/Builder/xmlns_attributes.php index e86234c7..cbf6f4d4 100644 --- a/src/Xml/Dom/Builder/xmlns_attributes.php +++ b/src/Xml/Dom/Builder/xmlns_attributes.php @@ -10,7 +10,7 @@ /** * @param array $attributes - A map of namespace prefix with namespace URI - * @return \Closure(DOMElement): DOMElement + * @return Closure(DOMElement): DOMElement */ function xmlns_attributes(array $attributes): Closure { diff --git a/src/Xml/Dom/Configurator/canonicalize.php b/src/Xml/Dom/Configurator/canonicalize.php index 454ca059..4ccb45e6 100644 --- a/src/Xml/Dom/Configurator/canonicalize.php +++ b/src/Xml/Dom/Configurator/canonicalize.php @@ -12,7 +12,7 @@ use function VeeWee\Xml\ErrorHandling\disallow_libxml_false_returns; /** - * @return \Closure(DOMDocument): DOMDocument + * @return Closure(DOMDocument): DOMDocument */ function canonicalize(): Closure { diff --git a/src/Xml/Dom/Configurator/comparable.php b/src/Xml/Dom/Configurator/comparable.php index 6eea8f3e..c15bf473 100644 --- a/src/Xml/Dom/Configurator/comparable.php +++ b/src/Xml/Dom/Configurator/comparable.php @@ -10,7 +10,7 @@ use function VeeWee\Xml\Internal\configure; /** - * @return \Closure(DOMDocument): DOMDocument + * @return Closure(DOMDocument): DOMDocument */ function comparable(): Closure { diff --git a/src/Xml/Dom/Configurator/document_uri.php b/src/Xml/Dom/Configurator/document_uri.php index 4b8bc2af..27a20b3b 100644 --- a/src/Xml/Dom/Configurator/document_uri.php +++ b/src/Xml/Dom/Configurator/document_uri.php @@ -9,7 +9,7 @@ /** * @param non-empty-string $documentUri - * @return \Closure(DOMDocument): DOMDocument + * @return Closure(DOMDocument): DOMDocument */ function document_uri(string $documentUri): Closure { diff --git a/src/Xml/Dom/Configurator/loader.php b/src/Xml/Dom/Configurator/loader.php index c0d927bc..ba469da1 100644 --- a/src/Xml/Dom/Configurator/loader.php +++ b/src/Xml/Dom/Configurator/loader.php @@ -10,7 +10,7 @@ /** * @param callable(DOMDocument): void $loader * - * @return \Closure(DOMDocument): DOMDocument + * @return Closure(DOMDocument): DOMDocument */ function loader(callable $loader): Closure { diff --git a/src/Xml/Dom/Configurator/normalize.php b/src/Xml/Dom/Configurator/normalize.php index e3e96b0f..502a9852 100644 --- a/src/Xml/Dom/Configurator/normalize.php +++ b/src/Xml/Dom/Configurator/normalize.php @@ -8,7 +8,7 @@ use DOMDocument; /** - * @return \Closure(DOMDocument): DOMDocument + * @return Closure(DOMDocument): DOMDocument */ function normalize(): Closure { diff --git a/src/Xml/Dom/Configurator/optimize_namespaces.php b/src/Xml/Dom/Configurator/optimize_namespaces.php index 4a45235c..49f2a884 100644 --- a/src/Xml/Dom/Configurator/optimize_namespaces.php +++ b/src/Xml/Dom/Configurator/optimize_namespaces.php @@ -9,7 +9,7 @@ use function VeeWee\Xml\Dom\Manipulator\Document\optimize_namespaces as optimize_namespaces_manipulator; /** - * @return \Closure(DOMDocument): DOMDocument + * @return Closure(DOMDocument): DOMDocument */ function optimize_namespaces(string $prefix = 'ns'): Closure { diff --git a/src/Xml/Dom/Configurator/pretty_print.php b/src/Xml/Dom/Configurator/pretty_print.php index 67f6d107..9fd845f7 100644 --- a/src/Xml/Dom/Configurator/pretty_print.php +++ b/src/Xml/Dom/Configurator/pretty_print.php @@ -8,7 +8,7 @@ use DOMDocument; /** - * @return \Closure(DOMDocument): DOMDocument + * @return Closure(DOMDocument): DOMDocument */ function pretty_print(): Closure { diff --git a/src/Xml/Dom/Configurator/traverse.php b/src/Xml/Dom/Configurator/traverse.php index cea3ee2a..2416eac8 100644 --- a/src/Xml/Dom/Configurator/traverse.php +++ b/src/Xml/Dom/Configurator/traverse.php @@ -13,7 +13,7 @@ * @no-named-arguments * @param list $visitors * - * @return \Closure(DOMDocument): DOMDocument + * @return Closure(DOMDocument): DOMDocument */ function traverse(Visitor ... $visitors): Closure { diff --git a/src/Xml/Dom/Configurator/trim_spaces.php b/src/Xml/Dom/Configurator/trim_spaces.php index 6fefc477..48cfc9a5 100644 --- a/src/Xml/Dom/Configurator/trim_spaces.php +++ b/src/Xml/Dom/Configurator/trim_spaces.php @@ -8,7 +8,7 @@ use DOMDocument; /** - * @return \Closure(DOMDocument): DOMDocument + * @return Closure(DOMDocument): DOMDocument */ function trim_spaces(): Closure { diff --git a/src/Xml/Dom/Configurator/utf8.php b/src/Xml/Dom/Configurator/utf8.php index 5ffa875b..627feef3 100644 --- a/src/Xml/Dom/Configurator/utf8.php +++ b/src/Xml/Dom/Configurator/utf8.php @@ -8,7 +8,7 @@ use DOMDocument; /** - * @return \Closure(DOMDocument): DOMDocument + * @return Closure(DOMDocument): DOMDocument */ function utf8(): Closure { diff --git a/src/Xml/Dom/Configurator/validator.php b/src/Xml/Dom/Configurator/validator.php index d1167406..b263ef89 100644 --- a/src/Xml/Dom/Configurator/validator.php +++ b/src/Xml/Dom/Configurator/validator.php @@ -14,7 +14,7 @@ /** * @param callable(DOMDocument): IssueCollection $validator * - * @return \Closure(DOMDocument): DOMDocument + * @return Closure(DOMDocument): DOMDocument */ function validator(callable $validator, ?Level $minimumLevel = null): Closure { diff --git a/src/Xml/Dom/Document.php b/src/Xml/Dom/Document.php index be5ae06b..0fa1e210 100644 --- a/src/Xml/Dom/Document.php +++ b/src/Xml/Dom/Document.php @@ -134,7 +134,7 @@ public function build(callable ... $builders): array { return Builder\nodes(...map( $builders, - fn (callable $builder): Closure => $builder(...) + static fn (callable $builder): Closure => $builder(...) ))($this->document); } diff --git a/src/Xml/Dom/Loader/xml_file_loader.php b/src/Xml/Dom/Loader/xml_file_loader.php index 06d560ed..ce76dabb 100644 --- a/src/Xml/Dom/Loader/xml_file_loader.php +++ b/src/Xml/Dom/Loader/xml_file_loader.php @@ -10,7 +10,7 @@ /** * @param int $options - bitmask of LIBXML_* constants https://www.php.net/manual/en/libxml.constants.php - * @return \Closure(DOMDocument): void + * @return Closure(DOMDocument): void */ function xml_file_loader(string $file, int $options = 0): Closure { diff --git a/src/Xml/Dom/Loader/xml_node_loader.php b/src/Xml/Dom/Loader/xml_node_loader.php index 4b8f2a37..01c254aa 100644 --- a/src/Xml/Dom/Loader/xml_node_loader.php +++ b/src/Xml/Dom/Loader/xml_node_loader.php @@ -11,7 +11,7 @@ use function VeeWee\Xml\Dom\Manipulator\Node\append_external_node; /** - * @return \Closure(DOMDocument): void + * @return Closure(DOMDocument): void */ function xml_node_loader(DOMNode $importedNode): Closure { diff --git a/src/Xml/Dom/Loader/xml_string_loader.php b/src/Xml/Dom/Loader/xml_string_loader.php index 333a3354..f80f183a 100644 --- a/src/Xml/Dom/Loader/xml_string_loader.php +++ b/src/Xml/Dom/Loader/xml_string_loader.php @@ -10,7 +10,7 @@ /** * @param non-empty-string $xml * @param int $options - bitmask of LIBXML_* constants https://www.php.net/manual/en/libxml.constants.php - * @return \Closure(DOMDocument): void + * @return Closure(DOMDocument): void */ function xml_string_loader(string $xml, int $options = 0): Closure { diff --git a/src/Xml/Dom/Locator/document_element.php b/src/Xml/Dom/Locator/document_element.php index d05b7525..4df07f81 100644 --- a/src/Xml/Dom/Locator/document_element.php +++ b/src/Xml/Dom/Locator/document_element.php @@ -9,7 +9,7 @@ use DOMElement; /** - * @return \Closure(DOMDocument): DOMElement + * @return Closure(DOMDocument): DOMElement */ function document_element(): Closure { diff --git a/src/Xml/Dom/Locator/elements_with_namespaced_tagname.php b/src/Xml/Dom/Locator/elements_with_namespaced_tagname.php index 9d5938f1..c996e815 100644 --- a/src/Xml/Dom/Locator/elements_with_namespaced_tagname.php +++ b/src/Xml/Dom/Locator/elements_with_namespaced_tagname.php @@ -11,7 +11,7 @@ use function VeeWee\Xml\Dom\Locator\Element\locate_by_namespaced_tag_name; /** - * @return \Closure(DOMDocument): NodeList + * @return Closure(DOMDocument): NodeList */ function elements_with_namespaced_tagname(string $namespace, string $localTagName): Closure { diff --git a/src/Xml/Dom/Locator/elements_with_tagname.php b/src/Xml/Dom/Locator/elements_with_tagname.php index c76541f2..f16bab3e 100644 --- a/src/Xml/Dom/Locator/elements_with_tagname.php +++ b/src/Xml/Dom/Locator/elements_with_tagname.php @@ -11,7 +11,7 @@ use function VeeWee\Xml\Dom\Locator\Element\locate_by_tag_name; /** - * @return \Closure(DOMDocument): NodeList + * @return Closure(DOMDocument): NodeList */ function elements_with_tagname(string $tagName): Closure { diff --git a/src/Xml/Dom/Locator/root_namespace.php b/src/Xml/Dom/Locator/root_namespace.php index 517aa1b2..63b8ccf2 100644 --- a/src/Xml/Dom/Locator/root_namespace.php +++ b/src/Xml/Dom/Locator/root_namespace.php @@ -8,7 +8,7 @@ use DOMDocument; /** - * @return \Closure(DOMDocument): ?string + * @return Closure(DOMDocument): ?string */ function root_namespace_uri(): Closure { diff --git a/src/Xml/Dom/Manipulator/append.php b/src/Xml/Dom/Manipulator/append.php index 92b0866e..c5bd011f 100644 --- a/src/Xml/Dom/Manipulator/append.php +++ b/src/Xml/Dom/Manipulator/append.php @@ -12,7 +12,7 @@ /** * @no-named-arguments * @throws RuntimeException - * @return \Closure(DOMNode): DOMNode + * @return Closure(DOMNode): DOMNode */ function append(DOMNode ... $nodes): Closure { diff --git a/src/Xml/Dom/Mapper/xml_string.php b/src/Xml/Dom/Mapper/xml_string.php index b6214ebe..529ae908 100644 --- a/src/Xml/Dom/Mapper/xml_string.php +++ b/src/Xml/Dom/Mapper/xml_string.php @@ -13,7 +13,7 @@ use function VeeWee\Xml\ErrorHandling\disallow_libxml_false_returns; /** - * @return \Closure(DOMNode): non-empty-string + * @return Closure(DOMNode): non-empty-string */ function xml_string(): Closure { diff --git a/src/Xml/Dom/Mapper/xslt_template.php b/src/Xml/Dom/Mapper/xslt_template.php index d51d46b8..89b510ab 100644 --- a/src/Xml/Dom/Mapper/xslt_template.php +++ b/src/Xml/Dom/Mapper/xslt_template.php @@ -12,7 +12,7 @@ /** * @param list $configurators - * @return \Closure(DOMDocument): string + * @return Closure(DOMDocument): string */ function xslt_template(Document $template, callable ... $configurators): Closure { diff --git a/src/Xml/Dom/Validator/internal_xsd_validator.php b/src/Xml/Dom/Validator/internal_xsd_validator.php index 2946b2c7..29fe45df 100644 --- a/src/Xml/Dom/Validator/internal_xsd_validator.php +++ b/src/Xml/Dom/Validator/internal_xsd_validator.php @@ -14,7 +14,7 @@ /** * @param list $schemaManipulators - * @return \Closure(DOMDocument): IssueCollection + * @return Closure(DOMDocument): IssueCollection */ function internal_xsd_validator(callable ... $schemaManipulators): Closure { @@ -24,7 +24,7 @@ function internal_xsd_validator(callable ... $schemaManipulators): Closure return validator_chain( ...$schemas->map( /** - * @return \Closure(DOMDocument): IssueCollection + * @return Closure(DOMDocument): IssueCollection */ static fn (Schema $schema): Closure => xsd_validator($schema->location()) ) diff --git a/src/Xml/Dom/Validator/validator_chain.php b/src/Xml/Dom/Validator/validator_chain.php index a3648551..8c26f0b2 100644 --- a/src/Xml/Dom/Validator/validator_chain.php +++ b/src/Xml/Dom/Validator/validator_chain.php @@ -11,7 +11,7 @@ /** * @param list $validators - * @return \Closure(DOMDocument): IssueCollection + * @return Closure(DOMDocument): IssueCollection */ function validator_chain(callable ... $validators): Closure { diff --git a/src/Xml/Dom/Validator/xsd_validator.php b/src/Xml/Dom/Validator/xsd_validator.php index db65cceb..8c06d27f 100644 --- a/src/Xml/Dom/Validator/xsd_validator.php +++ b/src/Xml/Dom/Validator/xsd_validator.php @@ -10,7 +10,7 @@ use function VeeWee\Xml\ErrorHandling\detect_issues; /** - * @return \Closure(DOMDocument): IssueCollection + * @return Closure(DOMDocument): IssueCollection */ function xsd_validator(string $xsd): Closure { diff --git a/src/Xml/Dom/Xpath/Configurator/all_functions.php b/src/Xml/Dom/Xpath/Configurator/all_functions.php index 8d39377f..0dbf2a8b 100644 --- a/src/Xml/Dom/Xpath/Configurator/all_functions.php +++ b/src/Xml/Dom/Xpath/Configurator/all_functions.php @@ -8,7 +8,7 @@ use DOMXPath; /** - * @return \Closure(DOMXPath): DOMXPath + * @return Closure(DOMXPath): DOMXPath */ function all_functions(): Closure { diff --git a/src/Xml/Dom/Xpath/Configurator/functions.php b/src/Xml/Dom/Xpath/Configurator/functions.php index c292dd67..3a1e02fd 100644 --- a/src/Xml/Dom/Xpath/Configurator/functions.php +++ b/src/Xml/Dom/Xpath/Configurator/functions.php @@ -10,7 +10,7 @@ /** * @param non-empty-list $functions * - * @return \Closure(DOMXPath): DOMXPath + * @return Closure(DOMXPath): DOMXPath */ function functions(array $functions): Closure { diff --git a/src/Xml/Dom/Xpath/Configurator/namespaces.php b/src/Xml/Dom/Xpath/Configurator/namespaces.php index 9fd45e5f..869169de 100644 --- a/src/Xml/Dom/Xpath/Configurator/namespaces.php +++ b/src/Xml/Dom/Xpath/Configurator/namespaces.php @@ -10,7 +10,7 @@ /** * @param array $namespaces * - * @return \Closure(DOMXPath): DOMXPath + * @return Closure(DOMXPath): DOMXPath */ function namespaces(array $namespaces): Closure { diff --git a/src/Xml/Dom/Xpath/Configurator/php_namespace.php b/src/Xml/Dom/Xpath/Configurator/php_namespace.php index 54f02a33..2c46818d 100644 --- a/src/Xml/Dom/Xpath/Configurator/php_namespace.php +++ b/src/Xml/Dom/Xpath/Configurator/php_namespace.php @@ -9,7 +9,7 @@ use VeeWee\Xml\Xmlns\Xmlns; /** - * @return \Closure(DOMXPath): DOMXPath + * @return Closure(DOMXPath): DOMXPath */ function php_namespace(): Closure { diff --git a/src/Xml/Dom/Xpath/Locator/evaluate.php b/src/Xml/Dom/Xpath/Locator/evaluate.php index b630dcbc..4ba61bef 100644 --- a/src/Xml/Dom/Xpath/Locator/evaluate.php +++ b/src/Xml/Dom/Xpath/Locator/evaluate.php @@ -15,7 +15,7 @@ * * @param TypeInterface $type * - * @return \Closure(DOMXPath): T + * @return Closure(DOMXPath): T */ function evaluate(string $query, TypeInterface $type, DOMNode $node = null): Closure { diff --git a/src/Xml/Dom/Xpath/Locator/query.php b/src/Xml/Dom/Xpath/Locator/query.php index 80cda80e..35d1ac20 100644 --- a/src/Xml/Dom/Xpath/Locator/query.php +++ b/src/Xml/Dom/Xpath/Locator/query.php @@ -13,7 +13,7 @@ use function VeeWee\Xml\ErrorHandling\disallow_libxml_false_returns; /** - * @return \Closure(DOMXPath): NodeList + * @return Closure(DOMXPath): NodeList */ function query(string $query, DOMNode $node = null): Closure { diff --git a/src/Xml/Dom/Xpath/Locator/query_single.php b/src/Xml/Dom/Xpath/Locator/query_single.php index b261ba6d..4e8213b6 100644 --- a/src/Xml/Dom/Xpath/Locator/query_single.php +++ b/src/Xml/Dom/Xpath/Locator/query_single.php @@ -16,7 +16,7 @@ use function VeeWee\Xml\ErrorHandling\disallow_libxml_false_returns; /** - * @return \Closure(DOMXPath): DOMNode + * @return Closure(DOMXPath): DOMNode */ function query_single(string $query, DOMNode $node = null): Closure { diff --git a/src/Xml/Encoding/Internal/Encoder/Builder/children.php b/src/Xml/Encoding/Internal/Encoder/Builder/children.php index fbf3b3ef..56cb864a 100644 --- a/src/Xml/Encoding/Internal/Encoder/Builder/children.php +++ b/src/Xml/Encoding/Internal/Encoder/Builder/children.php @@ -16,7 +16,7 @@ * * @psalm-suppress LessSpecificReturnStatement, MoreSpecificReturnType * - * @return \Closure(DOMElement): DOMElement + * @return Closure(DOMElement): DOMElement */ function children(string $name, array $children): Closure { @@ -24,7 +24,7 @@ function children(string $name, array $children): Closure ...map( $children, /** - * @return \Closure(DOMElement): DOMElement + * @return Closure(DOMElement): DOMElement */ static fn (array|string $data): Closure => is_array($data) ? element($name, $data) diff --git a/src/Xml/Encoding/Internal/Encoder/Builder/element.php b/src/Xml/Encoding/Internal/Encoder/Builder/element.php index 8afb9883..a9c86e37 100644 --- a/src/Xml/Encoding/Internal/Encoder/Builder/element.php +++ b/src/Xml/Encoding/Internal/Encoder/Builder/element.php @@ -28,7 +28,7 @@ * @psalm-internal VeeWee\Xml\Encoding * @psalm-suppress LessSpecificReturnStatement, MoreSpecificReturnType * - * @return \Closure(DOMElement): DOMElement + * @return Closure(DOMElement): DOMElement * * @throws AssertException * @throws InvariantViolationException @@ -49,7 +49,7 @@ function element(string $name, array $data): Closure $currentNamespace = $namespaces[''] ?? null; $namedNamespaces = filter_keys($namespaces ?? []); - /** @var list<\Closure(\DOMElement): \DOMElement> $children */ + /** @var list $children */ $children = filter_nulls([ $attributes ? attributes($attributes) : null, $namedNamespaces ? xmlns_attributes($namedNamespaces) : null, @@ -59,7 +59,7 @@ function element(string $name, array $data): Closure $element, /** * @param string|array $value - * @return \Closure(DOMElement): DOMElement + * @return Closure(DOMElement): DOMElement */ static fn (string $name, string|array $value): Closure => parent_node($name, $value) diff --git a/src/Xml/Encoding/Internal/Encoder/Builder/parent_node.php b/src/Xml/Encoding/Internal/Encoder/Builder/parent_node.php index 0d07f544..8127a252 100644 --- a/src/Xml/Encoding/Internal/Encoder/Builder/parent_node.php +++ b/src/Xml/Encoding/Internal/Encoder/Builder/parent_node.php @@ -17,7 +17,7 @@ * @psalm-internal VeeWee\Xml\Encoding * @psalm-suppress LessSpecificReturnStatement, MoreSpecificReturnType * - * @return \Closure(DOMNode): DOMElement + * @return Closure(DOMNode): DOMElement * * @throws AssertException * @throws InvariantViolationException diff --git a/src/Xml/Encoding/Internal/Encoder/Builder/root.php b/src/Xml/Encoding/Internal/Encoder/Builder/root.php index a148f84a..aaed37f9 100644 --- a/src/Xml/Encoding/Internal/Encoder/Builder/root.php +++ b/src/Xml/Encoding/Internal/Encoder/Builder/root.php @@ -14,7 +14,7 @@ /** * @psalm-internal VeeWee\Xml\Encoding - * @return \Closure(DOMDocument): list + * @return Closure(DOMDocument): list * * @throws EncodingException * @throws InvariantViolationException diff --git a/src/Xml/Encoding/Internal/wrap_exception.php b/src/Xml/Encoding/Internal/wrap_exception.php index 01500286..032824b7 100644 --- a/src/Xml/Encoding/Internal/wrap_exception.php +++ b/src/Xml/Encoding/Internal/wrap_exception.php @@ -12,7 +12,7 @@ * @psalm-internal VeeWee\Xml\Encoding * * @template T - * @param \Closure(): T $run + * @param Closure(): T $run * @return T * * @throws EncodingException diff --git a/src/Xml/Reader/Configurator/parser_options.php b/src/Xml/Reader/Configurator/parser_options.php index 24d72cc4..9f620033 100644 --- a/src/Xml/Reader/Configurator/parser_options.php +++ b/src/Xml/Reader/Configurator/parser_options.php @@ -31,7 +31,7 @@ * >, * bool> $options * - * @return \Closure(XMLReader): XMLReader + * @return Closure(XMLReader): XMLReader */ function parser_options(array $options): Closure { diff --git a/src/Xml/Reader/Configurator/xsd_schema.php b/src/Xml/Reader/Configurator/xsd_schema.php index 32c07edd..1107cf0c 100644 --- a/src/Xml/Reader/Configurator/xsd_schema.php +++ b/src/Xml/Reader/Configurator/xsd_schema.php @@ -11,7 +11,7 @@ use function VeeWee\Xml\ErrorHandling\disallow_libxml_false_returns; /** - * @return \Closure(XMLReader): XMLReader + * @return Closure(XMLReader): XMLReader */ function xsd_schema(string $schemaFile): Closure { diff --git a/src/Xml/Reader/Loader/xml_file_loader.php b/src/Xml/Reader/Loader/xml_file_loader.php index cb0fabbd..214ebd4a 100644 --- a/src/Xml/Reader/Loader/xml_file_loader.php +++ b/src/Xml/Reader/Loader/xml_file_loader.php @@ -11,7 +11,7 @@ use function VeeWee\Xml\ErrorHandling\disallow_libxml_false_returns; /** - * @return \Closure(): XMLReader + * @return Closure(): XMLReader */ function xml_file_loader(string $file): Closure { diff --git a/src/Xml/Reader/Loader/xml_string_loader.php b/src/Xml/Reader/Loader/xml_string_loader.php index aa2e7c13..2b781282 100644 --- a/src/Xml/Reader/Loader/xml_string_loader.php +++ b/src/Xml/Reader/Loader/xml_string_loader.php @@ -11,7 +11,7 @@ use function VeeWee\Xml\ErrorHandling\disallow_libxml_false_returns; /** - * @return \Closure(): XMLReader + * @return Closure(): XMLReader */ function xml_string_loader(string $xml): Closure { diff --git a/src/Xml/Reader/Matcher/all.php b/src/Xml/Reader/Matcher/all.php index 75d8aac7..6bbce9df 100644 --- a/src/Xml/Reader/Matcher/all.php +++ b/src/Xml/Reader/Matcher/all.php @@ -11,7 +11,7 @@ /** * @param list $matchers * - * @return \Closure(NodeSequence): bool + * @return Closure(NodeSequence): bool */ function all(callable ... $matchers): Closure { diff --git a/src/Xml/Reader/Matcher/any.php b/src/Xml/Reader/Matcher/any.php index f88aac76..9588f65e 100644 --- a/src/Xml/Reader/Matcher/any.php +++ b/src/Xml/Reader/Matcher/any.php @@ -11,7 +11,7 @@ /** * @param list $matchers * - * @return \Closure(NodeSequence): bool + * @return Closure(NodeSequence): bool */ function any(callable ... $matchers): Closure { diff --git a/src/Xml/Reader/Matcher/attribute_local_name.php b/src/Xml/Reader/Matcher/attribute_local_name.php index ab1eb3a3..bbb71d24 100644 --- a/src/Xml/Reader/Matcher/attribute_local_name.php +++ b/src/Xml/Reader/Matcher/attribute_local_name.php @@ -10,7 +10,7 @@ use function Psl\Iter\any; /** - * @return \Closure(NodeSequence): bool + * @return Closure(NodeSequence): bool */ function attribute_local_name(string $localName): Closure { diff --git a/src/Xml/Reader/Matcher/attribute_local_value.php b/src/Xml/Reader/Matcher/attribute_local_value.php index 2a038c5c..ded37c6f 100644 --- a/src/Xml/Reader/Matcher/attribute_local_value.php +++ b/src/Xml/Reader/Matcher/attribute_local_value.php @@ -10,7 +10,7 @@ use function Psl\Iter\any; /** - * @return \Closure(NodeSequence): bool + * @return Closure(NodeSequence): bool */ function attribute_local_value(string $localName, string $value): Closure { diff --git a/src/Xml/Reader/Matcher/attribute_name.php b/src/Xml/Reader/Matcher/attribute_name.php index 813a2696..15d2e32c 100644 --- a/src/Xml/Reader/Matcher/attribute_name.php +++ b/src/Xml/Reader/Matcher/attribute_name.php @@ -10,7 +10,7 @@ use function Psl\Iter\any; /** - * @return \Closure(NodeSequence): bool + * @return Closure(NodeSequence): bool */ function attribute_name(string $name): Closure { diff --git a/src/Xml/Reader/Matcher/attribute_value.php b/src/Xml/Reader/Matcher/attribute_value.php index ef00ba41..6250f29e 100644 --- a/src/Xml/Reader/Matcher/attribute_value.php +++ b/src/Xml/Reader/Matcher/attribute_value.php @@ -10,7 +10,7 @@ use function Psl\Iter\any; /** - * @return \Closure(NodeSequence): bool + * @return Closure(NodeSequence): bool */ function attribute_value(string $name, string $value): Closure { diff --git a/src/Xml/Reader/Matcher/document_element.php b/src/Xml/Reader/Matcher/document_element.php index 0b81a8e5..bc37835b 100644 --- a/src/Xml/Reader/Matcher/document_element.php +++ b/src/Xml/Reader/Matcher/document_element.php @@ -8,7 +8,7 @@ use VeeWee\Xml\Reader\Node\NodeSequence; /** - * @return \Closure(NodeSequence): bool + * @return Closure(NodeSequence): bool */ function document_element(): Closure { diff --git a/src/Xml/Reader/Matcher/element_local_name.php b/src/Xml/Reader/Matcher/element_local_name.php index a72d7bc5..1d20116d 100644 --- a/src/Xml/Reader/Matcher/element_local_name.php +++ b/src/Xml/Reader/Matcher/element_local_name.php @@ -8,7 +8,7 @@ use VeeWee\Xml\Reader\Node\NodeSequence; /** - * @return \Closure(NodeSequence): bool + * @return Closure(NodeSequence): bool */ function element_local_name(string $localName): Closure { diff --git a/src/Xml/Reader/Matcher/element_name.php b/src/Xml/Reader/Matcher/element_name.php index 05b345b4..f8a0a0b4 100644 --- a/src/Xml/Reader/Matcher/element_name.php +++ b/src/Xml/Reader/Matcher/element_name.php @@ -8,7 +8,7 @@ use VeeWee\Xml\Reader\Node\NodeSequence; /** - * @return \Closure(NodeSequence): bool + * @return Closure(NodeSequence): bool */ function element_name(string $name): Closure { diff --git a/src/Xml/Reader/Matcher/element_position.php b/src/Xml/Reader/Matcher/element_position.php index 6dd0309f..84c6f9ee 100644 --- a/src/Xml/Reader/Matcher/element_position.php +++ b/src/Xml/Reader/Matcher/element_position.php @@ -8,7 +8,7 @@ use VeeWee\Xml\Reader\Node\NodeSequence; /** - * @return \Closure(NodeSequence): bool + * @return Closure(NodeSequence): bool */ function element_position(int $position): Closure { diff --git a/src/Xml/Reader/Matcher/namespaced_attribute.php b/src/Xml/Reader/Matcher/namespaced_attribute.php index ceb3103a..1d3102c5 100644 --- a/src/Xml/Reader/Matcher/namespaced_attribute.php +++ b/src/Xml/Reader/Matcher/namespaced_attribute.php @@ -10,7 +10,7 @@ use function Psl\Iter\any; /** - * @return \Closure(NodeSequence): bool + * @return Closure(NodeSequence): bool */ function namespaced_attribute(string $namespace, string $localName): Closure { diff --git a/src/Xml/Reader/Matcher/namespaced_attribute_value.php b/src/Xml/Reader/Matcher/namespaced_attribute_value.php index eeab1f43..6a939b87 100644 --- a/src/Xml/Reader/Matcher/namespaced_attribute_value.php +++ b/src/Xml/Reader/Matcher/namespaced_attribute_value.php @@ -10,7 +10,7 @@ use function Psl\Iter\any; /** - * @return \Closure(NodeSequence): bool + * @return Closure(NodeSequence): bool */ function namespaced_attribute_value(string $namespace, string $localName, string $value): Closure { diff --git a/src/Xml/Reader/Matcher/namespaced_element.php b/src/Xml/Reader/Matcher/namespaced_element.php index 052f1248..2d1c8abe 100644 --- a/src/Xml/Reader/Matcher/namespaced_element.php +++ b/src/Xml/Reader/Matcher/namespaced_element.php @@ -8,7 +8,7 @@ use VeeWee\Xml\Reader\Node\NodeSequence; /** - * @return \Closure(NodeSequence): bool + * @return Closure(NodeSequence): bool */ function namespaced_element(string $namespace, string $localName): Closure { diff --git a/src/Xml/Reader/Matcher/nested.php b/src/Xml/Reader/Matcher/nested.php index a9be299b..3e552d20 100644 --- a/src/Xml/Reader/Matcher/nested.php +++ b/src/Xml/Reader/Matcher/nested.php @@ -24,7 +24,7 @@ * * @param non-empty-list $matchers * - * @return \Closure(NodeSequence): bool + * @return Closure(NodeSequence): bool */ function nested(callable ... $matchers): Closure { diff --git a/src/Xml/Reader/Matcher/node_attribute.php b/src/Xml/Reader/Matcher/node_attribute.php index 5e556717..8d9062f1 100644 --- a/src/Xml/Reader/Matcher/node_attribute.php +++ b/src/Xml/Reader/Matcher/node_attribute.php @@ -11,7 +11,7 @@ /** * @deprecated Use attribute_value instead! This will be removed in next major version - * @return \Closure(NodeSequence): bool + * @return Closure(NodeSequence): bool */ function node_attribute(string $key, string $value): Closure { diff --git a/src/Xml/Reader/Matcher/node_name.php b/src/Xml/Reader/Matcher/node_name.php index 645fb010..6e68546c 100644 --- a/src/Xml/Reader/Matcher/node_name.php +++ b/src/Xml/Reader/Matcher/node_name.php @@ -9,7 +9,7 @@ /** * @deprecated Use element_name instead! This will be removed in next major version - * @return \Closure(NodeSequence): bool + * @return Closure(NodeSequence): bool */ function node_name(string $name): Closure { diff --git a/src/Xml/Reader/Matcher/not.php b/src/Xml/Reader/Matcher/not.php index c268c18a..0d9a943c 100644 --- a/src/Xml/Reader/Matcher/not.php +++ b/src/Xml/Reader/Matcher/not.php @@ -10,7 +10,7 @@ /** * @param callable(NodeSequence): bool $matcher * - * @return \Closure(NodeSequence): bool + * @return Closure(NodeSequence): bool */ function not(callable $matcher): Closure { diff --git a/src/Xml/Reader/Matcher/sequence.php b/src/Xml/Reader/Matcher/sequence.php index 79284db0..bcfc8f03 100644 --- a/src/Xml/Reader/Matcher/sequence.php +++ b/src/Xml/Reader/Matcher/sequence.php @@ -17,7 +17,7 @@ * * @param non-empty-list $matcherSequence * - * @return \Closure(NodeSequence): bool + * @return Closure(NodeSequence): bool */ function sequence(callable ... $matcherSequence): Closure { diff --git a/src/Xml/Writer/Builder/attribute.php b/src/Xml/Writer/Builder/attribute.php index 98071058..fa876600 100644 --- a/src/Xml/Writer/Builder/attribute.php +++ b/src/Xml/Writer/Builder/attribute.php @@ -9,7 +9,7 @@ use XMLWriter; /** - * @return \Closure(XMLWriter): Generator + * @return Closure(XMLWriter): Generator */ function attribute(string $name, string $value): Closure { diff --git a/src/Xml/Writer/Builder/attributes.php b/src/Xml/Writer/Builder/attributes.php index 72c3574b..67929cf7 100644 --- a/src/Xml/Writer/Builder/attributes.php +++ b/src/Xml/Writer/Builder/attributes.php @@ -10,7 +10,7 @@ /** * @param array $attributes - * @return \Closure(XMLWriter): Generator + * @return Closure(XMLWriter): Generator */ function attributes(array $attributes): Closure { diff --git a/src/Xml/Writer/Builder/children.php b/src/Xml/Writer/Builder/children.php index 155c5ae6..62370129 100644 --- a/src/Xml/Writer/Builder/children.php +++ b/src/Xml/Writer/Builder/children.php @@ -11,7 +11,7 @@ /** * @param iterable<(callable(XMLWriter): Generator)> $nodeBuilders * - * @return \Closure(XMLWriter): Generator + * @return Closure(XMLWriter): Generator */ function children(iterable $nodeBuilders): Closure { diff --git a/src/Xml/Writer/Builder/document.php b/src/Xml/Writer/Builder/document.php index bc9cd8d4..5665f1ba 100644 --- a/src/Xml/Writer/Builder/document.php +++ b/src/Xml/Writer/Builder/document.php @@ -11,7 +11,7 @@ /** * @param list<(callable(XMLWriter): Generator)> $configurators * - * @return \Closure(XMLWriter): Generator + * @return Closure(XMLWriter): Generator */ function document(string $version, string $charset, callable ... $configurators): Closure { diff --git a/src/Xml/Writer/Builder/element.php b/src/Xml/Writer/Builder/element.php index 26d2196f..c6c6d186 100644 --- a/src/Xml/Writer/Builder/element.php +++ b/src/Xml/Writer/Builder/element.php @@ -11,7 +11,7 @@ /** * @param list<(callable(XMLWriter): Generator)> $configurators * - * @return \Closure(XMLWriter): Generator + * @return Closure(XMLWriter): Generator */ function element(string $name, callable ...$configurators): Closure { diff --git a/src/Xml/Writer/Builder/namespace_attribute.php b/src/Xml/Writer/Builder/namespace_attribute.php index 87ed70d9..4d5ca072 100644 --- a/src/Xml/Writer/Builder/namespace_attribute.php +++ b/src/Xml/Writer/Builder/namespace_attribute.php @@ -9,7 +9,7 @@ use XMLWriter; /** - * @return \Closure(XMLWriter): Generator + * @return Closure(XMLWriter): Generator */ function namespace_attribute(string $namespace, ?string $prefix = null): Closure { diff --git a/src/Xml/Writer/Builder/prefixed_attribute.php b/src/Xml/Writer/Builder/prefixed_attribute.php index ab076b30..33e38ae1 100644 --- a/src/Xml/Writer/Builder/prefixed_attribute.php +++ b/src/Xml/Writer/Builder/prefixed_attribute.php @@ -9,7 +9,7 @@ use XMLWriter; /** - * @return \Closure(XMLWriter): Generator + * @return Closure(XMLWriter): Generator */ function prefixed_attribute(string $prefix, string $name, string $value): Closure { diff --git a/src/Xml/Writer/Builder/prefixed_attributes.php b/src/Xml/Writer/Builder/prefixed_attributes.php index efd64d8d..c32531d8 100644 --- a/src/Xml/Writer/Builder/prefixed_attributes.php +++ b/src/Xml/Writer/Builder/prefixed_attributes.php @@ -11,7 +11,7 @@ /** * @param array $attributes - * @return \Closure(XMLWriter): Generator + * @return Closure(XMLWriter): Generator */ function prefixed_attributes(array $attributes): Closure { diff --git a/src/Xml/Writer/Builder/prefixed_element.php b/src/Xml/Writer/Builder/prefixed_element.php index 5639a592..d6e5c077 100644 --- a/src/Xml/Writer/Builder/prefixed_element.php +++ b/src/Xml/Writer/Builder/prefixed_element.php @@ -11,7 +11,7 @@ /** * @param list<(callable(XMLWriter): Generator)> $configurators * - * @return \Closure(XMLWriter): Generator + * @return Closure(XMLWriter): Generator */ function prefixed_element(string $prefix, string $name, callable ...$configurators): Closure { diff --git a/src/Xml/Writer/Builder/value.php b/src/Xml/Writer/Builder/value.php index f45d718b..f1f82820 100644 --- a/src/Xml/Writer/Builder/value.php +++ b/src/Xml/Writer/Builder/value.php @@ -9,7 +9,7 @@ use XMLWriter; /** - * @return \Closure(XMLWriter): Generator + * @return Closure(XMLWriter): Generator */ function value(string $value): Closure { diff --git a/src/Xml/Writer/Configurator/indentation.php b/src/Xml/Writer/Configurator/indentation.php index b6cc4ffc..35f384c8 100644 --- a/src/Xml/Writer/Configurator/indentation.php +++ b/src/Xml/Writer/Configurator/indentation.php @@ -9,7 +9,7 @@ use function VeeWee\Xml\ErrorHandling\disallow_libxml_false_returns; /** - * @return \Closure(XMLWriter): XMLWriter + * @return Closure(XMLWriter): XMLWriter */ function indentation(string $indentation): Closure { diff --git a/src/Xml/Writer/Configurator/open.php b/src/Xml/Writer/Configurator/open.php index 2c6cc8ee..dc9d0403 100644 --- a/src/Xml/Writer/Configurator/open.php +++ b/src/Xml/Writer/Configurator/open.php @@ -11,7 +11,7 @@ /** * @param callable(XMLWriter): bool $opener - * @return \Closure(XMLWriter): XMLWriter + * @return Closure(XMLWriter): XMLWriter */ function open(callable $opener): Closure { diff --git a/src/Xml/Writer/Opener/xml_file_opener.php b/src/Xml/Writer/Opener/xml_file_opener.php index 19345cc1..275a189c 100644 --- a/src/Xml/Writer/Opener/xml_file_opener.php +++ b/src/Xml/Writer/Opener/xml_file_opener.php @@ -9,7 +9,7 @@ use XMLWriter; /** - * @return \Closure(XMLWriter): bool XMLWriter + * @return Closure(XMLWriter): bool XMLWriter */ function xml_file_opener(string $file): Closure { diff --git a/src/Xml/Xsd/Schema/Manipulator/base_path.php b/src/Xml/Xsd/Schema/Manipulator/base_path.php index 39515033..d6646e58 100644 --- a/src/Xml/Xsd/Schema/Manipulator/base_path.php +++ b/src/Xml/Xsd/Schema/Manipulator/base_path.php @@ -12,7 +12,7 @@ /** * - * @return \Closure(SchemaCollection): SchemaCollection + * @return Closure(SchemaCollection): SchemaCollection */ function base_path(string $basePath): Closure { diff --git a/src/Xml/Xsd/Schema/Manipulator/overwrite_with_local_files.php b/src/Xml/Xsd/Schema/Manipulator/overwrite_with_local_files.php index 455d333e..12ebfc77 100644 --- a/src/Xml/Xsd/Schema/Manipulator/overwrite_with_local_files.php +++ b/src/Xml/Xsd/Schema/Manipulator/overwrite_with_local_files.php @@ -11,7 +11,7 @@ /** * @param array $map - Key=namspace, value=location * - * @return \Closure(SchemaCollection): SchemaCollection + * @return Closure(SchemaCollection): SchemaCollection */ function overwrite_with_local_files(array $map): Closure { diff --git a/src/Xml/Xslt/Configurator/all_functions.php b/src/Xml/Xslt/Configurator/all_functions.php index d922650f..ece1f163 100644 --- a/src/Xml/Xslt/Configurator/all_functions.php +++ b/src/Xml/Xslt/Configurator/all_functions.php @@ -8,7 +8,7 @@ use XSLTProcessor; /** - * @return \Closure(XSLTProcessor): XSLTProcessor + * @return Closure(XSLTProcessor): XSLTProcessor */ function all_functions(): Closure { diff --git a/src/Xml/Xslt/Configurator/functions.php b/src/Xml/Xslt/Configurator/functions.php index d4ceffee..cb6e1175 100644 --- a/src/Xml/Xslt/Configurator/functions.php +++ b/src/Xml/Xslt/Configurator/functions.php @@ -10,7 +10,7 @@ /** * @param non-empty-list $functions * - * @return \Closure(XSLTProcessor): XSLTProcessor + * @return Closure(XSLTProcessor): XSLTProcessor */ function functions(array $functions): Closure { diff --git a/src/Xml/Xslt/Configurator/loader.php b/src/Xml/Xslt/Configurator/loader.php index 7586297b..fc14cd07 100644 --- a/src/Xml/Xslt/Configurator/loader.php +++ b/src/Xml/Xslt/Configurator/loader.php @@ -10,7 +10,7 @@ /** * @param callable(XSLTProcessor): void $loader * - * @return \Closure(XSLTProcessor): XSLTProcessor + * @return Closure(XSLTProcessor): XSLTProcessor */ function loader(callable $loader): Closure { diff --git a/src/Xml/Xslt/Configurator/parameters.php b/src/Xml/Xslt/Configurator/parameters.php index b49556cf..d90da449 100644 --- a/src/Xml/Xslt/Configurator/parameters.php +++ b/src/Xml/Xslt/Configurator/parameters.php @@ -17,7 +17,7 @@ * * @param array $parameters * - * @return \Closure(XSLTProcessor): XSLTProcessor + * @return Closure(XSLTProcessor): XSLTProcessor */ function parameters(array $parameters): Closure { diff --git a/src/Xml/Xslt/Configurator/profiler.php b/src/Xml/Xslt/Configurator/profiler.php index 4007596f..1789fad9 100644 --- a/src/Xml/Xslt/Configurator/profiler.php +++ b/src/Xml/Xslt/Configurator/profiler.php @@ -13,7 +13,7 @@ /** * @param non-empty-string $profilingFile - * @return \Closure(XSLTProcessor): XSLTProcessor + * @return Closure(XSLTProcessor): XSLTProcessor */ function profiler(string $profilingFile): Closure { diff --git a/src/Xml/Xslt/Configurator/security_preferences.php b/src/Xml/Xslt/Configurator/security_preferences.php index 8d24d99c..06f73c5c 100644 --- a/src/Xml/Xslt/Configurator/security_preferences.php +++ b/src/Xml/Xslt/Configurator/security_preferences.php @@ -20,7 +20,7 @@ * \XSL_SECPREF_DEFAULT * > $preferences * - * @return \Closure(XSLTProcessor): XSLTProcessor + * @return Closure(XSLTProcessor): XSLTProcessor */ function security_preferences(int $preferences): Closure { diff --git a/src/Xml/Xslt/Loader/from_template_document.php b/src/Xml/Xslt/Loader/from_template_document.php index 5521b807..bca30d41 100644 --- a/src/Xml/Xslt/Loader/from_template_document.php +++ b/src/Xml/Xslt/Loader/from_template_document.php @@ -11,7 +11,7 @@ use function VeeWee\Xml\ErrorHandling\disallow_libxml_false_returns; /** - * @return \Closure(XSLTProcessor): void + * @return Closure(XSLTProcessor): void */ function from_template_document(Document $template): Closure { diff --git a/src/Xml/Xslt/Transformer/document_to_string.php b/src/Xml/Xslt/Transformer/document_to_string.php index 952b74f7..b0fff5d8 100644 --- a/src/Xml/Xslt/Transformer/document_to_string.php +++ b/src/Xml/Xslt/Transformer/document_to_string.php @@ -11,7 +11,7 @@ use function VeeWee\Xml\ErrorHandling\disallow_libxml_false_returns; /** - * @return \Closure(XSLTProcessor): string + * @return Closure(XSLTProcessor): string */ function document_to_string(Document $document): Closure { diff --git a/tests/Xml/Reader/Matcher/AbstractMatcherTest.php b/tests/Xml/Reader/Matcher/AbstractMatcherTest.php index 17ae66a3..ec25b1b5 100644 --- a/tests/Xml/Reader/Matcher/AbstractMatcherTest.php +++ b/tests/Xml/Reader/Matcher/AbstractMatcherTest.php @@ -17,7 +17,7 @@ abstract public static function provideMatcherCases(): Generator; /** * @dataProvider provideRealXmlCases * - * @param \Closure(NodeSequence): bool $matcher + * @param Closure(NodeSequence): bool $matcher * @param list $expected */ public function test_real_xml_cases(Closure $matcher, string $xml, array $expected) @@ -31,7 +31,7 @@ public function test_real_xml_cases(Closure $matcher, string $xml, array $expect /** * @dataProvider provideMatcherCases * - * @param \Closure(NodeSequence): bool $matcher + * @param Closure(NodeSequence): bool $matcher */ public function test_matcher_cases(Closure $matcher, NodeSequence $sequence, bool $expected) { From a0aa5c8ad343a022c7da7a18f4bb5c95f8ba98d6 Mon Sep 17 00:00:00 2001 From: Toon Verwerft Date: Thu, 23 Nov 2023 14:30:22 +0100 Subject: [PATCH 4/4] Dont ignore platform reqs anymore --- .github/workflows/analyzers.yaml | 2 +- .github/workflows/autoloader.yaml | 2 +- .github/workflows/code-style.yaml | 2 +- .github/workflows/stress.yaml | 2 +- .github/workflows/tests.yaml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/analyzers.yaml b/.github/workflows/analyzers.yaml index 2088d667..85890d14 100644 --- a/.github/workflows/analyzers.yaml +++ b/.github/workflows/analyzers.yaml @@ -25,6 +25,6 @@ jobs: tools: 'composer:v2' extensions: pcov, mbstring, posix, xdebug, dom, libxml, xml, xsl, xmlreader, xmlwriter - name: Install dependencies - run: composer update --ignore-platform-req=php --prefer-dist --no-progress --no-suggest ${{ matrix.composer-options }} + run: composer update --prefer-dist --no-progress --no-suggest ${{ matrix.composer-options }} - name: Run the tests run: composer run psalm diff --git a/.github/workflows/autoloader.yaml b/.github/workflows/autoloader.yaml index cb69366b..d24c9efd 100644 --- a/.github/workflows/autoloader.yaml +++ b/.github/workflows/autoloader.yaml @@ -20,7 +20,7 @@ jobs: tools: 'composer:v2' extensions: pcov, mbstring, posix - name: Install dependencies - run: composer update --ignore-platform-req=php --prefer-dist --no-progress --no-suggest ${{ matrix.composer-options }} + run: composer update --prefer-dist --no-progress --no-suggest ${{ matrix.composer-options }} - name: Parse autoloader run: composer run autoload - name: Check if the autloader is up to date diff --git a/.github/workflows/code-style.yaml b/.github/workflows/code-style.yaml index af697430..619334f1 100644 --- a/.github/workflows/code-style.yaml +++ b/.github/workflows/code-style.yaml @@ -24,6 +24,6 @@ jobs: tools: 'composer:v2' extensions: pcov, mbstring, posix - name: Install dependencies - run: composer --ignore-platform-req=php update --prefer-dist --no-progress --no-suggest ${{ matrix.composer-options }} + run: composer update --prefer-dist --no-progress --no-suggest ${{ matrix.composer-options }} - name: Run the tests run: composer run cs diff --git a/.github/workflows/stress.yaml b/.github/workflows/stress.yaml index 744f9ee5..225e9210 100644 --- a/.github/workflows/stress.yaml +++ b/.github/workflows/stress.yaml @@ -21,6 +21,6 @@ jobs: tools: 'composer:v2' extensions: pcov, mbstring, posix, dom, libxml, xml, xsl, xmlreader, xmlwriter - name: Install dependencies - run: composer update --ignore-platform-req=php --prefer-dist --no-progress --no-suggest + run: composer update --prefer-dist --no-progress --no-suggest - name: Run the stress tests run: composer run stress diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index be915035..c0502fb1 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -27,7 +27,7 @@ jobs: ini-values: error_reporting=E_ALL extensions: pcov, mbstring, posix, dom, libxml, xml, xsl, xmlreader, xmlwriter - name: Install dependencies - run: composer update --ignore-platform-req=php --prefer-dist --no-progress --no-suggest + run: composer update --prefer-dist --no-progress --no-suggest - name: Run the tests run: composer run tests - name: Check tests quality