diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9ae94e5..0c67849 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -17,6 +17,6 @@ on: jobs: ci: - uses: codenamephp/workflows.php/.github/workflows/ci.yml@main + uses: codenamephp/workflows.php/.github/workflows/ci.yml@1 with: - php-versions: '["8.0", "8.1", "8.2"]' + php-versions: '["8.0", "8.1", "8.2", "8.3"]' diff --git a/.github/workflows/prepare-release.yml b/.github/workflows/prepare-release.yml index 61f8dbf..a2e8395 100644 --- a/.github/workflows/prepare-release.yml +++ b/.github/workflows/prepare-release.yml @@ -7,16 +7,16 @@ on: jobs: calculate_next_version: - uses: codenamephp/workflows.common/.github/workflows/calculate-next-version.yml@main + uses: codenamephp/workflows.common/.github/workflows/calculate-next-version.yml@1 draft_release: needs: calculate_next_version - uses: codenamephp/workflows.common/.github/workflows/draft-release.yml@main + uses: codenamephp/workflows.common/.github/workflows/draft-release.yml@1 with: version: ${{ needs.calculate_next_version.outputs.version }} update_changelog: - uses: codenamephp/workflows.common/.github/workflows/update-changelog.yml@main + uses: codenamephp/workflows.common/.github/workflows/update-changelog.yml@1 needs: calculate_next_version with: ref: ${{github.ref_name}} future-release: ${{ needs.calculate_next_version.outputs.version }} - release-branch: 'release' \ No newline at end of file + release-branch: 'release' diff --git a/.github/workflows/update-changelog.yml b/.github/workflows/update-changelog.yml index 08ad334..f46f7c2 100644 --- a/.github/workflows/update-changelog.yml +++ b/.github/workflows/update-changelog.yml @@ -7,6 +7,6 @@ on: jobs: update_changelog: - uses: codenamephp/workflows.common/.github/workflows/update-changelog.yml@main + uses: codenamephp/workflows.common/.github/workflows/update-changelog.yml@1 with: - ref: ${{github.ref_name}} \ No newline at end of file + ref: ${{github.ref_name}} diff --git a/.idea/php.xml b/.idea/php.xml index 8996ca4..f200da0 100644 --- a/.idea/php.xml +++ b/.idea/php.xml @@ -43,12 +43,13 @@ + - - + + diff --git a/.idea/phpunit.xml b/.idea/phpunit.xml index 4ea9753..4f8104c 100644 --- a/.idea/phpunit.xml +++ b/.idea/phpunit.xml @@ -3,7 +3,7 @@ diff --git a/.idea/platform.di.iml b/.idea/platform.di.iml index ac0e1f5..af2a421 100644 --- a/.idea/platform.di.iml +++ b/.idea/platform.di.iml @@ -15,6 +15,7 @@ + diff --git a/.idea/runConfigurations/ci_all.xml b/.idea/runConfigurations/ci_all.xml deleted file mode 100644 index 26badfe..0000000 --- a/.idea/runConfigurations/ci_all.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - \ No newline at end of file diff --git a/composer.json b/composer.json index ab4cd58..36a287e 100644 --- a/composer.json +++ b/composer.json @@ -41,8 +41,8 @@ "phpunit": "XDEBUG_MODE=coverage tools/phpunit.phar -c test/phpunit.dist.xml test/", "psalm": "XDEBUG_MODE=off tools/psalm --threads=10 --long-progress", "composer-unused": "XDEBUG_MODE=off tools/composer-unused --no-progress --no-interaction", - "composer-require-checker": "XDEBUG_MODE=off tools/composer-require-checker --no-interaction", - "infection": "XDEBUG_MODE=coverage tools/infection --min-msi=100 --min-covered-msi=100 --threads=4 --no-progress --show-mutations", + "composer-require-checker": "php -r 'exit((int) !(PHP_VERSION_ID >= 80400));' && XDEBUG_MODE=off tools/composer-require-checker --no-interaction || echo 'Skipping composer-require-checker because it needs PHP8.2 or higher'", + "infection": "php -r 'exit((int) !(PHP_VERSION_ID >= 80100));' && XDEBUG_MODE=coverage tools/infection --min-msi=100 --min-covered-msi=100 --threads=4 --no-progress --show-mutations || echo 'Skipping infection because it needs PHP8.1 or higher'", "phive:update": "XDEBUG_MODE=off phive update && git add tools/* phive.xml && git commit tools/* -m 'Updated phive dependencies'", "ci-all": [ "composer validate", diff --git a/docker/application/Dockerfile b/docker/application/Dockerfile index bccc84d..c3c9765 100644 --- a/docker/application/Dockerfile +++ b/docker/application/Dockerfile @@ -1,15 +1,9 @@ -FROM webdevops/php-dev:8.2 +FROM webdevops/php-dev:8.3 COPY --from=composer:2 /usr/bin/composer /usr/local/bin/composer -RUN wget -O phive.phar "https://phar.io/releases/phive.phar" && \ - wget -O phive.phar.asc "https://phar.io/releases/phive.phar.asc" && \ - gpg --keyserver hkps://keys.openpgp.org --recv-keys 0x6AF725270AB81E04D79442549D8A98B29B2D5D79 && \ - gpg --verify phive.phar.asc phive.phar && \ - rm phive.phar.asc && \ - chmod +x phive.phar && \ - mv phive.phar /usr/local/bin/phive && \ - mkdir "/home/$APPLICATION_USER/.phive" +COPY --from=phario/phive:0.15.2 /usr/local/bin/phive /usr/local/bin/phive +RUN mkdir "/home/$APPLICATION_USER/.phive" # configure services RUN set -x \ diff --git a/phive.xml b/phive.xml index 095267a..63c9d5b 100644 --- a/phive.xml +++ b/phive.xml @@ -16,9 +16,9 @@ ~ --> - - - - - + + + + + diff --git a/tools/composer-require-checker b/tools/composer-require-checker index 660d495..aaa35df 100755 Binary files a/tools/composer-require-checker and b/tools/composer-require-checker differ diff --git a/tools/composer-unused b/tools/composer-unused index 76628fa..017a7ca 100755 Binary files a/tools/composer-unused and b/tools/composer-unused differ diff --git a/tools/infection b/tools/infection index 3760596..257191b 100755 Binary files a/tools/infection and b/tools/infection differ diff --git a/tools/phpunit.phar b/tools/phpunit.phar index ccd1431..20c8204 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.15 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,35 +30,46 @@ 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 { $execute = false; } -$options = getopt('', array('prepend:', 'manifest', 'sbom')); +$options = getopt('', array('prepend:', 'composer-lock', 'manifest', 'sbom')); if (isset($options['prepend'])) { require $options['prepend']; } -if (isset($options['manifest'])) { +if (isset($options['composer-lock'])) { + $printComposerLock = true; +} elseif (isset($options['manifest'])) { $printManifest = true; } elseif (isset($options['sbom'])) { $printSbom = true; @@ -67,9 +78,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.15.phar'); -Phar::mapPhar('phpunit-9.5.27.phar'); +Phar::mapPhar('phpunit-9.6.15.phar'); spl_autoload_register( function ($class) { @@ -79,6 +90,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 +168,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 +409,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 +920,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 +1117,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 +1167,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 +1190,7 @@ spl_autoload_register( } if (isset($classes[$class])) { - require_once 'phar://phpunit-9.5.27.phar' . $classes[$class]; + require_once 'phar://phpunit-9.6.15.phar' . $classes[$class]; } }, true, @@ -1186,6 +1200,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 +1278,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 +1519,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 +2030,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 +2227,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 +2277,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,12 +2297,18 @@ 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.15.phar' . $file; } require __PHPUNIT_PHAR_ROOT__ . '/phpunit/Framework/Assert/Functions.php'; if ($execute) { + if (isset($printComposerLock)) { + print file_get_contents(__PHPUNIT_PHAR_ROOT__ . '/composer.lock'); + + exit; + } + if (isset($printManifest)) { print file_get_contents(__PHPUNIT_PHAR_ROOT__ . '/manifest.txt'); @@ -2304,100 +2327,2047 @@ 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.15.phar composer.lock| je|3敤Ldoctrine-instantiator/Doctrine/Instantiator/Exception/ExceptionInterface.php jebRdoctrine-instantiator/Doctrine/Instantiator/Exception/InvalidArgumentException.php jeRdoctrine-instantiator/Doctrine/Instantiator/Exception/UnexpectedValueException.php: je:_Y%[<doctrine-instantiator/Doctrine/Instantiator/Instantiator.php je87Edoctrine-instantiator/Doctrine/Instantiator/InstantiatorInterface.php  je LȤdoctrine-instantiator/LICENSE$ je$ +͂ manifest.txt jeƻl'myclabs-deep-copy/DeepCopy/DeepCopy.php jeLä7myclabs-deep-copy/DeepCopy/Exception/CloneException.php je {ˤ:myclabs-deep-copy/DeepCopy/Exception/PropertyException.php je3Gz5myclabs-deep-copy/DeepCopy/Filter/ChainableFilter.php jeTE Gmyclabs-deep-copy/DeepCopy/Filter/Doctrine/DoctrineCollectionFilter.php + je +DgLmyclabs-deep-copy/DeepCopy/Filter/Doctrine/DoctrineEmptyCollectionFilter.php je)$Bmyclabs-deep-copy/DeepCopy/Filter/Doctrine/DoctrineProxyFilter.php je),myclabs-deep-copy/DeepCopy/Filter/Filter.phpd jedM0myclabs-deep-copy/DeepCopy/Filter/KeepFilter.php jeYn3myclabs-deep-copy/DeepCopy/Filter/ReplaceFilter.php je3myclabs-deep-copy/DeepCopy/Filter/SetNullFilter.php je䊉Dmyclabs-deep-copy/DeepCopy/Matcher/Doctrine/DoctrineProxyMatcher.php jepr.myclabs-deep-copy/DeepCopy/Matcher/Matcher.php je6myclabs-deep-copy/DeepCopy/Matcher/PropertyMatcher.php je=Bv:myclabs-deep-copy/DeepCopy/Matcher/PropertyNameMatcher.php jeR:myclabs-deep-copy/DeepCopy/Matcher/PropertyTypeMatcher.php2 je2ZQͤ:myclabs-deep-copy/DeepCopy/Reflection/ReflectionHelper.php5 je5ىAmyclabs-deep-copy/DeepCopy/TypeFilter/Date/DateIntervalFilter.php jeƤ7myclabs-deep-copy/DeepCopy/TypeFilter/ReplaceFilter.php jez;myclabs-deep-copy/DeepCopy/TypeFilter/ShallowCopyFilter.php jeؤ?myclabs-deep-copy/DeepCopy/TypeFilter/Spl/ArrayObjectFilter.php je^Amyclabs-deep-copy/DeepCopy/TypeFilter/Spl/SplDoublyLinkedList.php jev|Gmyclabs-deep-copy/DeepCopy/TypeFilter/Spl/SplDoublyLinkedListFilter.php jeT+4myclabs-deep-copy/DeepCopy/TypeFilter/TypeFilter.php jeVD6myclabs-deep-copy/DeepCopy/TypeMatcher/TypeMatcher.php jeQBŤ(myclabs-deep-copy/DeepCopy/deep_copy.php jerxmyclabs-deep-copy/LICENSE5 je5ʭ˄nikic-php-parser/LICENSE je*&nikic-php-parser/PhpParser/Builder.php je61nikic-php-parser/PhpParser/Builder/ClassConst.php je-nikic-php-parser/PhpParser/Builder/Class_.php jec32nikic-php-parser/PhpParser/Builder/Declaration.php jeE7/nikic-php-parser/PhpParser/Builder/EnumCase.php^ je^ueT,nikic-php-parser/PhpParser/Builder/Enum_.php je #3nikic-php-parser/PhpParser/Builder/FunctionLike.php jeZqe0nikic-php-parser/PhpParser/Builder/Function_.phpF jeFux1nikic-php-parser/PhpParser/Builder/Interface_.php je -nikic-php-parser/PhpParser/Builder/Method.php je}1nikic-php-parser/PhpParser/Builder/Namespace_.php: je:ˆp,nikic-php-parser/PhpParser/Builder/Param.php{ je{j4/nikic-php-parser/PhpParser/Builder/Property.php| je|O /nikic-php-parser/PhpParser/Builder/TraitUse.phpW jeWL@9nikic-php-parser/PhpParser/Builder/TraitUseAdaptation.php jeUVx-nikic-php-parser/PhpParser/Builder/Trait_.php jekj+nikic-php-parser/PhpParser/Builder/Use_.php jes-nikic-php-parser/PhpParser/BuilderFactory.php+ je+ $-nikic-php-parser/PhpParser/BuilderHelpers.php$ je$:@&nikic-php-parser/PhpParser/Comment.php jeA*nikic-php-parser/PhpParser/Comment/Doc.phpx jexp;nikic-php-parser/PhpParser/ConstExprEvaluationException.php_ je_I 1nikic-php-parser/PhpParser/ConstExprEvaluator.phpl% jel%evQ$nikic-php-parser/PhpParser/Error.php jeQZ+nikic-php-parser/PhpParser/ErrorHandler.php/ je/#\6nikic-php-parser/PhpParser/ErrorHandler/Collecting.php je&Ȥ4nikic-php-parser/PhpParser/ErrorHandler/Throwing.php jeS}<0nikic-php-parser/PhpParser/Internal/DiffElem.php7 je7$.nikic-php-parser/PhpParser/Internal/Differ.php- je-^Anikic-php-parser/PhpParser/Internal/PrintableNewAnonClassNode.php je<3nikic-php-parser/PhpParser/Internal/TokenStream.php# je#f*nikic-php-parser/PhpParser/JsonDecoder.php je xg$nikic-php-parser/PhpParser/Lexer.phpyZ jeyZq⃤.nikic-php-parser/PhpParser/Lexer/Emulative.phpO# jeO#ܲݤDnikic-php-parser/PhpParser/Lexer/TokenEmulator/AttributeEmulator.php jerLnikic-php-parser/PhpParser/Lexer/TokenEmulator/CoaleseEqualTokenEmulator.php  je *§oDnikic-php-parser/PhpParser/Lexer/TokenEmulator/EnumTokenEmulator.php jeLFHnikic-php-parser/PhpParser/Lexer/TokenEmulator/ExplicitOctalEmulator.php je*#Lnikic-php-parser/PhpParser/Lexer/TokenEmulator/FlexibleDocStringEmulator.phpn jen 1Bnikic-php-parser/PhpParser/Lexer/TokenEmulator/FnTokenEmulator.php jejBnikic-php-parser/PhpParser/Lexer/TokenEmulator/KeywordEmulator.php je`atEnikic-php-parser/PhpParser/Lexer/TokenEmulator/MatchTokenEmulator.php jec/Hnikic-php-parser/PhpParser/Lexer/TokenEmulator/NullsafeTokenEmulator.php je:&ERnikic-php-parser/PhpParser/Lexer/TokenEmulator/NumericLiteralSeparatorEmulator.phpV jeVPnikic-php-parser/PhpParser/Lexer/TokenEmulator/ReadonlyFunctionTokenEmulator.php jee!ćHnikic-php-parser/PhpParser/Lexer/TokenEmulator/ReadonlyTokenEmulator.phpL jeL +`9JBnikic-php-parser/PhpParser/Lexer/TokenEmulator/ReverseEmulator.php jeI}@nikic-php-parser/PhpParser/Lexer/TokenEmulator/TokenEmulator.phpu jeuD4h*nikic-php-parser/PhpParser/NameContext.php% je%G-#nikic-php-parser/PhpParser/Node.php jeyݗ'nikic-php-parser/PhpParser/Node/Arg.php0 je0q H-nikic-php-parser/PhpParser/Node/Attribute.phpH jeHhqK2nikic-php-parser/PhpParser/Node/AttributeGroup.php jeB9/nikic-php-parser/PhpParser/Node/ComplexType.phpS jeS(*nikic-php-parser/PhpParser/Node/Const_.php jeZ(nikic-php-parser/PhpParser/Node/Expr.php jeh傤6nikic-php-parser/PhpParser/Node/Expr/ArrayDimFetch.phpM jeMIY2nikic-php-parser/PhpParser/Node/Expr/ArrayItem.phpx jex| 2/nikic-php-parser/PhpParser/Node/Expr/Array_.php8 je8;p6nikic-php-parser/PhpParser/Node/Expr/ArrowFunction.php je w3/nikic-php-parser/PhpParser/Node/Expr/Assign.php je1nikic-php-parser/PhpParser/Node/Expr/AssignOp.php je,<nikic-php-parser/PhpParser/Node/Expr/AssignOp/BitwiseAnd.php jeu;nikic-php-parser/PhpParser/Node/Expr/AssignOp/BitwiseOr.php je;<nikic-php-parser/PhpParser/Node/Expr/AssignOp/BitwiseXor.php jelϚ:nikic-php-parser/PhpParser/Node/Expr/AssignOp/Coalesce.php jeq,8nikic-php-parser/PhpParser/Node/Expr/AssignOp/Concat.php je5nikic-php-parser/PhpParser/Node/Expr/AssignOp/Div.php jeYP +7nikic-php-parser/PhpParser/Node/Expr/AssignOp/Minus.php je隤5nikic-php-parser/PhpParser/Node/Expr/AssignOp/Mod.php je]10Y5nikic-php-parser/PhpParser/Node/Expr/AssignOp/Mul.php jeπ/6nikic-php-parser/PhpParser/Node/Expr/AssignOp/Plus.php je&|5nikic-php-parser/PhpParser/Node/Expr/AssignOp/Pow.php jeyV;nikic-php-parser/PhpParser/Node/Expr/AssignOp/ShiftLeft.php je<nikic-php-parser/PhpParser/Node/Expr/AssignOp/ShiftRight.php jes*2nikic-php-parser/PhpParser/Node/Expr/AssignRef.phpH jeHE`ob1nikic-php-parser/PhpParser/Node/Expr/BinaryOp.phpo jeo Ѥ<nikic-php-parser/PhpParser/Node/Expr/BinaryOp/BitwiseAnd.phpP jeP6L6;nikic-php-parser/PhpParser/Node/Expr/BinaryOp/BitwiseOr.phpN jeN_|<nikic-php-parser/PhpParser/Node/Expr/BinaryOp/BitwiseXor.phpP jeP~Ƥ<nikic-php-parser/PhpParser/Node/Expr/BinaryOp/BooleanAnd.phpQ jeQ5v;nikic-php-parser/PhpParser/Node/Expr/BinaryOp/BooleanOr.phpO jeOeӸ:nikic-php-parser/PhpParser/Node/Expr/BinaryOp/Coalesce.phpM jeMY 8nikic-php-parser/PhpParser/Node/Expr/BinaryOp/Concat.phpH jeH @q5nikic-php-parser/PhpParser/Node/Expr/BinaryOp/Div.phpB jeBi7nikic-php-parser/PhpParser/Node/Expr/BinaryOp/Equal.phpG jeGݙʤ9nikic-php-parser/PhpParser/Node/Expr/BinaryOp/Greater.phpJ jeJ4ͤ@nikic-php-parser/PhpParser/Node/Expr/BinaryOp/GreaterOrEqual.phpY jeY^ز;nikic-php-parser/PhpParser/Node/Expr/BinaryOp/Identical.phpP jeP"<nikic-php-parser/PhpParser/Node/Expr/BinaryOp/LogicalAnd.phpR jeRi;nikic-php-parser/PhpParser/Node/Expr/BinaryOp/LogicalOr.phpO jeO@<nikic-php-parser/PhpParser/Node/Expr/BinaryOp/LogicalXor.phpR jeR4e7nikic-php-parser/PhpParser/Node/Expr/BinaryOp/Minus.phpF jeF$Lˤ5nikic-php-parser/PhpParser/Node/Expr/BinaryOp/Mod.phpB jeBʤ5nikic-php-parser/PhpParser/Node/Expr/BinaryOp/Mul.phpB jeB|:nikic-php-parser/PhpParser/Node/Expr/BinaryOp/NotEqual.phpM jeM>nikic-php-parser/PhpParser/Node/Expr/BinaryOp/NotIdentical.phpV jeVh< +6nikic-php-parser/PhpParser/Node/Expr/BinaryOp/Plus.phpD jeD' ,5nikic-php-parser/PhpParser/Node/Expr/BinaryOp/Pow.phpC jeC;nikic-php-parser/PhpParser/Node/Expr/BinaryOp/ShiftLeft.phpO jeOQ#<nikic-php-parser/PhpParser/Node/Expr/BinaryOp/ShiftRight.phpQ jeQǤ9nikic-php-parser/PhpParser/Node/Expr/BinaryOp/Smaller.phpJ jeJf@nikic-php-parser/PhpParser/Node/Expr/BinaryOp/SmallerOrEqual.phpY jeY⍤;nikic-php-parser/PhpParser/Node/Expr/BinaryOp/Spaceship.phpP jePHƉ.3nikic-php-parser/PhpParser/Node/Expr/BitwiseNot.php je~'3nikic-php-parser/PhpParser/Node/Expr/BooleanNot.php jeDC1nikic-php-parser/PhpParser/Node/Expr/CallLike.php& je&KS0-nikic-php-parser/PhpParser/Node/Expr/Cast.phpA jeA:Vs4nikic-php-parser/PhpParser/Node/Expr/Cast/Array_.php jeI|3nikic-php-parser/PhpParser/Node/Expr/Cast/Bool_.php je V]S4nikic-php-parser/PhpParser/Node/Expr/Cast/Double.php je>,2nikic-php-parser/PhpParser/Node/Expr/Cast/Int_.php jec5nikic-php-parser/PhpParser/Node/Expr/Cast/Object_.php je5nikic-php-parser/PhpParser/Node/Expr/Cast/String_.php je4nikic-php-parser/PhpParser/Node/Expr/Cast/Unset_.php je1Ӥ8nikic-php-parser/PhpParser/Node/Expr/ClassConstFetch.php jeE/nikic-php-parser/PhpParser/Node/Expr/Clone_.php jeW0nikic-php-parser/PhpParser/Node/Expr/Closure.php + je +U;3nikic-php-parser/PhpParser/Node/Expr/ClosureUse.php jeh3nikic-php-parser/PhpParser/Node/Expr/ConstFetch.php je޶%/nikic-php-parser/PhpParser/Node/Expr/Empty_.php je'.nikic-php-parser/PhpParser/Node/Expr/Error.php jea\6nikic-php-parser/PhpParser/Node/Expr/ErrorSuppress.php jeg.nikic-php-parser/PhpParser/Node/Expr/Eval_.php je356.nikic-php-parser/PhpParser/Node/Expr/Exit_.php je1nikic-php-parser/PhpParser/Node/Expr/FuncCall.php3 je3%A1nikic-php-parser/PhpParser/Node/Expr/Include_.php jei4nikic-php-parser/PhpParser/Node/Expr/Instanceof_.phpa jea< /nikic-php-parser/PhpParser/Node/Expr/Isset_.php jeI.nikic-php-parser/PhpParser/Node/Expr/List_.php je/nikic-php-parser/PhpParser/Node/Expr/Match_.php jeW 3nikic-php-parser/PhpParser/Node/Expr/MethodCall.phpO jeODWX-nikic-php-parser/PhpParser/Node/Expr/New_.php jeiĤ;nikic-php-parser/PhpParser/Node/Expr/NullsafeMethodCall.phpf jefɤ>nikic-php-parser/PhpParser/Node/Expr/NullsafePropertyFetch.php je /N0nikic-php-parser/PhpParser/Node/Expr/PostDec.php jew:0nikic-php-parser/PhpParser/Node/Expr/PostInc.php jeᦦ!/nikic-php-parser/PhpParser/Node/Expr/PreDec.php jetg/nikic-php-parser/PhpParser/Node/Expr/PreInc.php jeYä/nikic-php-parser/PhpParser/Node/Expr/Print_.php jenX6nikic-php-parser/PhpParser/Node/Expr/PropertyFetch.php jeɾ2nikic-php-parser/PhpParser/Node/Expr/ShellExec.php jehy3nikic-php-parser/PhpParser/Node/Expr/StaticCall.phpe jee<nikic-php-parser/PhpParser/Node/Expr/StaticPropertyFetch.php& je&ܐ0nikic-php-parser/PhpParser/Node/Expr/Ternary.php jeQͤ/nikic-php-parser/PhpParser/Node/Expr/Throw_.php je ?3nikic-php-parser/PhpParser/Node/Expr/UnaryMinus.php jelA2nikic-php-parser/PhpParser/Node/Expr/UnaryPlus.php jee̤1nikic-php-parser/PhpParser/Node/Expr/Variable.php jemJr2nikic-php-parser/PhpParser/Node/Expr/YieldFrom.php jew8/nikic-php-parser/PhpParser/Node/Expr/Yield_.php\ je\ 0nikic-php-parser/PhpParser/Node/FunctionLike.php je4ͤ.nikic-php-parser/PhpParser/Node/Identifier.php jeJa4nikic-php-parser/PhpParser/Node/IntersectionType.php jeo,nikic-php-parser/PhpParser/Node/MatchArm.php je+m6(nikic-php-parser/PhpParser/Node/Name.php  je 7nikic-php-parser/PhpParser/Node/Name/FullyQualified.php je 1nikic-php-parser/PhpParser/Node/Name/Relative.php jeǛEf0nikic-php-parser/PhpParser/Node/NullableType.php je6C)nikic-php-parser/PhpParser/Node/Param.phpb jebMߤ*nikic-php-parser/PhpParser/Node/Scalar.phpk jek,ߤ2nikic-php-parser/PhpParser/Node/Scalar/DNumber.php jex3H:3nikic-php-parser/PhpParser/Node/Scalar/Encapsed.php jeRU=nikic-php-parser/PhpParser/Node/Scalar/EncapsedStringPart.php je%2nikic-php-parser/PhpParser/Node/Scalar/LNumber.php je z5nikic-php-parser/PhpParser/Node/Scalar/MagicConst.phpc jec,xG<nikic-php-parser/PhpParser/Node/Scalar/MagicConst/Class_.phpT jeT㨘X9nikic-php-parser/PhpParser/Node/Scalar/MagicConst/Dir.phpM jeMal:nikic-php-parser/PhpParser/Node/Scalar/MagicConst/File.phpP jeP#?nikic-php-parser/PhpParser/Node/Scalar/MagicConst/Function_.php] je]HnY:nikic-php-parser/PhpParser/Node/Scalar/MagicConst/Line.phpP jePM4<nikic-php-parser/PhpParser/Node/Scalar/MagicConst/Method.phpV jeVΤ@nikic-php-parser/PhpParser/Node/Scalar/MagicConst/Namespace_.php` je`><nikic-php-parser/PhpParser/Node/Scalar/MagicConst/Trait_.phpT jeTd2nikic-php-parser/PhpParser/Node/Scalar/String_.phpq jeqT$Q(nikic-php-parser/PhpParser/Node/Stmt.php jev2//nikic-php-parser/PhpParser/Node/Stmt/Break_.php je֤.nikic-php-parser/PhpParser/Node/Stmt/Case_.phpl jelu/nikic-php-parser/PhpParser/Node/Stmt/Catch_.php| je|*V>3nikic-php-parser/PhpParser/Node/Stmt/ClassConst.php| je| K:d2nikic-php-parser/PhpParser/Node/Stmt/ClassLike.php je 04nikic-php-parser/PhpParser/Node/Stmt/ClassMethod.php jeX/nikic-php-parser/PhpParser/Node/Stmt/Class_.phpu jeu_ļ/nikic-php-parser/PhpParser/Node/Stmt/Const_.php je2nikic-php-parser/PhpParser/Node/Stmt/Continue_.php je7nikic-php-parser/PhpParser/Node/Stmt/DeclareDeclare.php jeƀ1nikic-php-parser/PhpParser/Node/Stmt/Declare_.php je.. +,nikic-php-parser/PhpParser/Node/Stmt/Do_.phpB jeB +@.nikic-php-parser/PhpParser/Node/Stmt/Echo_.php je͘Ƥ0nikic-php-parser/PhpParser/Node/Stmt/ElseIf_.phpI jeIEä.nikic-php-parser/PhpParser/Node/Stmt/Else_.php je|ä1nikic-php-parser/PhpParser/Node/Stmt/EnumCase.php jejD.nikic-php-parser/PhpParser/Node/Stmt/Enum_.php= je=dA3nikic-php-parser/PhpParser/Node/Stmt/Expression.php jeRK1nikic-php-parser/PhpParser/Node/Stmt/Finally_.php je1A-nikic-php-parser/PhpParser/Node/Stmt/For_.php> je>NQ1nikic-php-parser/PhpParser/Node/Stmt/Foreach_.phpo jeo92nikic-php-parser/PhpParser/Node/Stmt/Function_.php, + je, +nL0nikic-php-parser/PhpParser/Node/Stmt/Global_.php je.nikic-php-parser/PhpParser/Node/Stmt/Goto_.php jeVyPn1nikic-php-parser/PhpParser/Node/Stmt/GroupUse.php + je +ߎ0|5nikic-php-parser/PhpParser/Node/Stmt/HaltCompiler.php je];,nikic-php-parser/PhpParser/Node/Stmt/If_.php: je:u٤3nikic-php-parser/PhpParser/Node/Stmt/InlineHTML.php je]3nikic-php-parser/PhpParser/Node/Stmt/Interface_.php jeL/Ǥ.nikic-php-parser/PhpParser/Node/Stmt/Label.php jeӤ3nikic-php-parser/PhpParser/Node/Stmt/Namespace_.php je㹀,nikic-php-parser/PhpParser/Node/Stmt/Nop.php@ je@G1nikic-php-parser/PhpParser/Node/Stmt/Property.phpO + jeO +=9nikic-php-parser/PhpParser/Node/Stmt/PropertyProperty.php je҉0nikic-php-parser/PhpParser/Node/Stmt/Return_.php jeͿ)e2nikic-php-parser/PhpParser/Node/Stmt/StaticVar.php je0nikic-php-parser/PhpParser/Node/Stmt/Static_.php je0nikic-php-parser/PhpParser/Node/Stmt/Switch_.php5 je5FFY/nikic-php-parser/PhpParser/Node/Stmt/Throw_.php je1nikic-php-parser/PhpParser/Node/Stmt/TraitUse.php jeg,;nikic-php-parser/PhpParser/Node/Stmt/TraitUseAdaptation.php jea8Anikic-php-parser/PhpParser/Node/Stmt/TraitUseAdaptation/Alias.phpA jeAdFnikic-php-parser/PhpParser/Node/Stmt/TraitUseAdaptation/Precedence.phpZ jeZP֤/nikic-php-parser/PhpParser/Node/Stmt/Trait_.php je$v1nikic-php-parser/PhpParser/Node/Stmt/TryCatch.php$ je$W/nikic-php-parser/PhpParser/Node/Stmt/Unset_.php je=oB/nikic-php-parser/PhpParser/Node/Stmt/UseUse.phpd jedb-nikic-php-parser/PhpParser/Node/Stmt/Use_.phpl jel9=|/nikic-php-parser/PhpParser/Node/Stmt/While_.phpE jeEա-nikic-php-parser/PhpParser/Node/UnionType.php jeԛ5nikic-php-parser/PhpParser/Node/VarLikeIdentifier.php je&7nikic-php-parser/PhpParser/Node/VariadicPlaceholder.php jeP+nikic-php-parser/PhpParser/NodeAbstract.phpZ jeZ׻@)nikic-php-parser/PhpParser/NodeDumper.phpd jedY l)nikic-php-parser/PhpParser/NodeFinder.php je ,nikic-php-parser/PhpParser/NodeTraverser.php]' je]'TG:Ƥ5nikic-php-parser/PhpParser/NodeTraverserInterface.php| je|Ś *nikic-php-parser/PhpParser/NodeVisitor.php je39nikic-php-parser/PhpParser/NodeVisitor/CloningVisitor.php je"WJ9nikic-php-parser/PhpParser/NodeVisitor/FindingVisitor.php jeB>nikic-php-parser/PhpParser/NodeVisitor/FirstFindingVisitor.php jem4Ť7nikic-php-parser/PhpParser/NodeVisitor/NameResolver.phpq& jeq&ǠG@nikic-php-parser/PhpParser/NodeVisitor/NodeConnectingVisitor.php jeu +äBnikic-php-parser/PhpParser/NodeVisitor/ParentConnectingVisitor.phpu jeuME2nikic-php-parser/PhpParser/NodeVisitorAbstract.php je%nikic-php-parser/PhpParser/Parser.php} je}{.nikic-php-parser/PhpParser/Parser/Multiple.php jesF)7*nikic-php-parser/PhpParser/Parser/Php5.php+ je+1*nikic-php-parser/PhpParser/Parser/Php7.phpT jeT!V`,nikic-php-parser/PhpParser/Parser/Tokens.php& je&<-nikic-php-parser/PhpParser/ParserAbstract.phpT jeT'[,nikic-php-parser/PhpParser/ParserFactory.php je +~&5nikic-php-parser/PhpParser/PrettyPrinter/Standard.php+ je+4nikic-php-parser/PhpParser/PrettyPrinterAbstract.phpQ jeQ%jobject-enumerator/LICENSE jey{object-reflector/LICENSE je9vphar-io-manifest/LICENSE` je`p+phar-io-manifest/ManifestDocumentMapper.php je:#phar-io-manifest/ManifestLoader.php je.-a'phar-io-manifest/ManifestSerializer.php jerp:phar-io-manifest/exceptions/ElementCollectionException.php je I)phar-io-manifest/exceptions/Exception.php je?phar-io-manifest/exceptions/InvalidApplicationNameException.php je:@>5phar-io-manifest/exceptions/InvalidEmailException.php je<3phar-io-manifest/exceptions/InvalidUrlException.php je 9phar-io-manifest/exceptions/ManifestDocumentException.php je!P4@phar-io-manifest/exceptions/ManifestDocumentLoadingException.phpH jeHǃ?phar-io-manifest/exceptions/ManifestDocumentMapperException.php je:9z8phar-io-manifest/exceptions/ManifestElementException.php jeA47phar-io-manifest/exceptions/ManifestLoaderException.php jeD>'phar-io-manifest/values/Application.php jeI$ۤ+phar-io-manifest/values/ApplicationName.php; je;D"phar-io-manifest/values/Author.php jeF,phar-io-manifest/values/AuthorCollection.php jeo4phar-io-manifest/values/AuthorCollectionIterator.php3 je3џ,phar-io-manifest/values/BundledComponent.php@ je@DP`6phar-io-manifest/values/BundledComponentCollection.php  je ¾W6>phar-io-manifest/values/BundledComponentCollectionIterator.php jeVh0phar-io-manifest/values/CopyrightInformation.phpP jeP ai!phar-io-manifest/values/Email.phpN jeNZ&%phar-io-manifest/values/Extension.php jeq}#phar-io-manifest/values/Library.php jeO#phar-io-manifest/values/License.php je&!o$phar-io-manifest/values/Manifest.php + je +=La3phar-io-manifest/values/PhpExtensionRequirement.php je11phar-io-manifest/values/PhpVersionRequirement.php jem?'phar-io-manifest/values/Requirement.php jed1phar-io-manifest/values/RequirementCollection.php jeP9phar-io-manifest/values/RequirementCollectionIterator.phpj jejܭ: phar-io-manifest/values/Type.php je=%phar-io-manifest/values/Url.php je͚&phar-io-manifest/xml/AuthorElement.phpr jer<0phar-io-manifest/xml/AuthorElementCollection.php, je,-'phar-io-manifest/xml/BundlesElement.phpS jeSWN>)phar-io-manifest/xml/ComponentElement.phpy jeyݤ3phar-io-manifest/xml/ComponentElementCollection.php5 je5(\(phar-io-manifest/xml/ContainsElement.phpn jenf)phar-io-manifest/xml/CopyrightElement.php je7*phar-io-manifest/xml/ElementCollection.php je@ #phar-io-manifest/xml/ExtElement.php  je y>-phar-io-manifest/xml/ExtElementCollection.php# je#E)phar-io-manifest/xml/ExtensionElement.php} je}0'phar-io-manifest/xml/LicenseElement.phpo jeo%:')phar-io-manifest/xml/ManifestDocument.php + je + 4(phar-io-manifest/xml/ManifestElement.php4 je4#phar-io-manifest/xml/PhpElement.php jeB:5(phar-io-manifest/xml/RequiresElement.php$ je$>!phar-io-version/BuildMetaData.php jephar-io-version/LICENSE& je&Ҫ $phar-io-version/PreReleaseSuffix.php je:phar-io-version/Version.php jeu#+phar-io-version/VersionConstraintParser.phpT jeT Ф*phar-io-version/VersionConstraintValue.phpH + jeH +F{~4!phar-io-version/VersionNumber.php jeO19phar-io-version/constraints/AbstractVersionConstraint.php jexB9phar-io-version/constraints/AndVersionConstraintGroup.php jeY4phar-io-version/constraints/AnyVersionConstraint.phpR jeR #6phar-io-version/constraints/ExactVersionConstraint.php je!Ephar-io-version/constraints/GreaterThanOrEqualToVersionConstraint.php jeVU8phar-io-version/constraints/OrVersionConstraintGroup.php jeM%Fphar-io-version/constraints/SpecificMajorAndMinorVersionConstraint.php jeɍ>phar-io-version/constraints/SpecificMajorVersionConstraint.php je`9q:1phar-io-version/constraints/VersionConstraint.php jeeDq(phar-io-version/exceptions/Exception.php je$eb?phar-io-version/exceptions/InvalidPreReleaseSuffixException.php jeҵ6phar-io-version/exceptions/InvalidVersionException.php je4/S7phar-io-version/exceptions/NoBuildMetaDataException.php je]:phar-io-version/exceptions/NoPreReleaseSuffixException.php jeT4Dphar-io-version/exceptions/UnsupportedVersionConstraintException.php je9"php-code-coverage/CodeCoverage.phpNE jeNE3M%#php-code-coverage/Driver/Driver.php je3A'php-code-coverage/Driver/PcovDriver.phpJ jeJ)php-code-coverage/Driver/PhpdbgDriver.php^ + je^ +_2G%php-code-coverage/Driver/Selector.php je 6]*php-code-coverage/Driver/Xdebug2Driver.phpA jeA *php-code-coverage/Driver/Xdebug3Driver.php je h*Jphp-code-coverage/Exception/BranchAndPathCoverageNotSupportedException.php je77Fphp-code-coverage/Exception/DeadCodeDetectionNotSupportedException.php jeCphp-code-coverage/Exception/DirectoryCouldNotBeCreatedException.php je)php-code-coverage/Exception/Exception.php} je}z8php-code-coverage/Exception/InvalidArgumentException.php jeK.nFphp-code-coverage/Exception/NoCodeCoverageDriverAvailableException.php/ je/6R]php-code-coverage/Exception/NoCodeCoverageDriverWithPathCoverageSupportAvailableException.phpa jea"A/php-code-coverage/Exception/ParserException.php je,/Dphp-code-coverage/Exception/PathExistsButIsNotDirectoryException.php je.29php-code-coverage/Exception/PcovNotAvailableException.phpa jeaj;php-code-coverage/Exception/PhpdbgNotAvailableException.php` je`3php-code-coverage/Exception/ReflectionException.php jek)?php-code-coverage/Exception/ReportAlreadyFinalizedException.php: je:d%6Iphp-code-coverage/Exception/StaticAnalysisCacheNotConfiguredException.php je}6php-code-coverage/Exception/TestIdMissingException.php je +Cphp-code-coverage/Exception/UnintentionallyCoveredCodeException.php+ je+Q_ª=php-code-coverage/Exception/WriteOperationFailedException.php je(e;php-code-coverage/Exception/WrongXdebugVersionException.php je Ȥ:php-code-coverage/Exception/Xdebug2NotEnabledException.phpf jef,':php-code-coverage/Exception/Xdebug3NotEnabledException.phpy jey<>;php-code-coverage/Exception/XdebugNotAvailableException.phpe jeeNG,php-code-coverage/Exception/XmlException.php jeWܤphp-code-coverage/Filter.php je 4php-code-coverage/LICENSE je-~y֤'php-code-coverage/Node/AbstractNode.php: je:%^"php-code-coverage/Node/Builder.php  je 2N$php-code-coverage/Node/CrapIndex.php je# $php-code-coverage/Node/Directory.php +& je +&}php-code-coverage/Node/File.phpK jeK{#php-code-coverage/Node/Iterator.php jeHk/php-code-coverage/ProcessedCodeCoverageData.php$ je$')php-code-coverage/RawCodeCoverageData.php! je!#php-code-coverage/Report/Clover.phpW( jeW(yD&php-code-coverage/Report/Cobertura.php1 je1 Z#php-code-coverage/Report/Crap4j.php< je<r(php-code-coverage/Report/Html/Facade.php" je";ڤ*php-code-coverage/Report/Html/Renderer.phpU! jeU!}4php-code-coverage/Report/Html/Renderer/Dashboard.phpC jeC L+4php-code-coverage/Report/Html/Renderer/Directory.php  je (/php-code-coverage/Report/Html/Renderer/File.php je ZuBphp-code-coverage/Report/Html/Renderer/Template/branches.html.dist jeh2+Fphp-code-coverage/Report/Html/Renderer/Template/coverage_bar.html.dist' je'O}Mphp-code-coverage/Report/Html/Renderer/Template/coverage_bar_branch.html.dist' je'O}Ephp-code-coverage/Report/Html/Renderer/Template/css/bootstrap.min.cssy jeyĤ>php-code-coverage/Report/Html/Renderer/Template/css/custom.css jeAphp-code-coverage/Report/Html/Renderer/Template/css/nv.d3.min.cssX% jeX%0,@php-code-coverage/Report/Html/Renderer/Template/css/octicons.cssX jeX'#=php-code-coverage/Report/Html/Renderer/Template/css/style.css + je +Cphp-code-coverage/Report/Html/Renderer/Template/dashboard.html.dist jeDJphp-code-coverage/Report/Html/Renderer/Template/dashboard_branch.html.dist jeDCphp-code-coverage/Report/Html/Renderer/Template/directory.html.dist jeՆJphp-code-coverage/Report/Html/Renderer/Template/directory_branch.html.dist jen2]Hphp-code-coverage/Report/Html/Renderer/Template/directory_item.html.distA jeAdsOphp-code-coverage/Report/Html/Renderer/Template/directory_item_branch.html.dist; je;mۤ>php-code-coverage/Report/Html/Renderer/Template/file.html.distP jeP j*Ephp-code-coverage/Report/Html/Renderer/Template/file_branch.html.dist je ㉞Cphp-code-coverage/Report/Html/Renderer/Template/file_item.html.distr jer/yJphp-code-coverage/Report/Html/Renderer/Template/file_item_branch.html.distl jel-Cphp-code-coverage/Report/Html/Renderer/Template/icons/file-code.svg0 je0QUUHphp-code-coverage/Report/Html/Renderer/Template/icons/file-directory.svg jeZCphp-code-coverage/Report/Html/Renderer/Template/js/bootstrap.min.jsc jec"#<php-code-coverage/Report/Html/Renderer/Template/js/d3.min.jsP jePhb:php-code-coverage/Report/Html/Renderer/Template/js/file.js jeb䆤@php-code-coverage/Report/Html/Renderer/Template/js/jquery.min.js@^ je@^ ?php-code-coverage/Report/Html/Renderer/Template/js/nv.d3.min.jsR jeRphp-code-coverage/Report/Html/Renderer/Template/line.html.dist je{?php-code-coverage/Report/Html/Renderer/Template/lines.html.diste jeedf Ephp-code-coverage/Report/Html/Renderer/Template/method_item.html.dist jejפLphp-code-coverage/Report/Html/Renderer/Template/method_item_branch.html.dist jeyĎk?php-code-coverage/Report/Html/Renderer/Template/paths.html.dist je*'ݤ php-code-coverage/Report/PHP.php je<[!php-code-coverage/Report/Text.php' je' 6H1php-code-coverage/Report/Xml/BuildInformation.php je T3e)php-code-coverage/Report/Xml/Coverage.php+ je+9E*php-code-coverage/Report/Xml/Directory.php jeAf'php-code-coverage/Report/Xml/Facade.php" je"O}%php-code-coverage/Report/Xml/File.php+ je+g׃'php-code-coverage/Report/Xml/Method.phpW jeW ʤ%php-code-coverage/Report/Xml/Node.php3 je3(php-code-coverage/Report/Xml/Project.phpf jefPe'php-code-coverage/Report/Xml/Report.php je HC'php-code-coverage/Report/Xml/Source.phpz jez'1&php-code-coverage/Report/Xml/Tests.php je'php-code-coverage/Report/Xml/Totals.php je:6%php-code-coverage/Report/Xml/Unit.php jeY0php-code-coverage/StaticAnalysis/CacheWarmer.php` je`_%פ8php-code-coverage/StaticAnalysis/CachingFileAnalyser.php je2Q;php-code-coverage/StaticAnalysis/CodeUnitFindingVisitor.php,( je,(vMBphp-code-coverage/StaticAnalysis/ExecutableLinesFindingVisitor.phpm' jem'i1php-code-coverage/StaticAnalysis/FileAnalyser.php jeJ?php-code-coverage/StaticAnalysis/IgnoredLinesFindingVisitor.php je 8php-code-coverage/StaticAnalysis/ParsingFileAnalyser.php jed%php-code-coverage/Util/Filesystem.php je%php-code-coverage/Util/Percentage.php jephp-code-coverage/Version.php jeR郤php-file-iterator/Facade.php% + je% +Τphp-file-iterator/Factory.php jeg ,php-file-iterator/Iterator.phpZ jeZ C܎php-file-iterator/LICENSE jeo:php-invoker/Invoker.php je+L$php-invoker/exceptions/Exception.phpr jervvduDphp-invoker/exceptions/ProcessControlExtensionNotLoadedException.php je +php-invoker/exceptions/TimeoutException.php je.php-text-template/LICENSE jeuphp-text-template/Template.php( je( *php-text-template/exceptions/Exception.phpy jeyn9php-text-template/exceptions/InvalidArgumentException.php jeaM1php-text-template/exceptions/RuntimeException.php jeYm'php-timer/Duration.php + je +tXyphp-timer/LICENSE jex$php-timer/ResourceUsageFormatter.php jePھphp-timer/Timer.php jecAɤ"php-timer/exceptions/Exception.phpn jeniuۤ/php-timer/exceptions/NoActiveTimerException.php jel٤Ephp-timer/exceptions/TimeSinceStartOfRequestNotAvailableException.php je$b+phpdocumentor-reflection-common/Element.php  je %(phpdocumentor-reflection-common/File.php jeI))phpdocumentor-reflection-common/Fqsen.php je?'phpdocumentor-reflection-common/LICENSE9 je9*2Ȑ,phpdocumentor-reflection-common/Location.php je=(+phpdocumentor-reflection-common/Project.php jeJ2phpdocumentor-reflection-common/ProjectFactory.php_ je_j\".phpdocumentor-reflection-docblock/DocBlock.php jeHx>$:phpdocumentor-reflection-docblock/DocBlock/Description.php je 54Aphpdocumentor-reflection-docblock/DocBlock/DescriptionFactory.php jed=<phpdocumentor-reflection-docblock/DocBlock/ExampleFinder.php, je,ׯf9phpdocumentor-reflection-docblock/DocBlock/Serializer.php  je ]Aphpdocumentor-reflection-docblock/DocBlock/StandardTagFactory.php0 je0<2phpdocumentor-reflection-docblock/DocBlock/Tag.php je9phpdocumentor-reflection-docblock/DocBlock/TagFactory.php jeJMx:phpdocumentor-reflection-docblock/DocBlock/Tags/Author.php je ;phpdocumentor-reflection-docblock/DocBlock/Tags/BaseTag.php jeZr:phpdocumentor-reflection-docblock/DocBlock/Tags/Covers.phpg + jeg 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> + je +}CO;phpdocumentor-reflection-docblock/DocBlock/Tags/Example.php jealN@Hphpdocumentor-reflection-docblock/DocBlock/Tags/Factory/StaticMethod.php je.ͤ=phpdocumentor-reflection-docblock/DocBlock/Tags/Formatter.php je}BܤLphpdocumentor-reflection-docblock/DocBlock/Tags/Formatter/AlignFormatter.phpq jeqRphpdocumentor-reflection-docblock/DocBlock/Tags/Formatter/PassthroughFormatter.php jeP~;phpdocumentor-reflection-docblock/DocBlock/Tags/Generic.phpx jex Bn>phpdocumentor-reflection-docblock/DocBlock/Tags/InvalidTag.php, je,Md88phpdocumentor-reflection-docblock/DocBlock/Tags/Link.php jeG:phpdocumentor-reflection-docblock/DocBlock/Tags/Method.php jeYKc9phpdocumentor-reflection-docblock/DocBlock/Tags/Param.php jeB<phpdocumentor-reflection-docblock/DocBlock/Tags/Property.php je |yCϤ@phpdocumentor-reflection-docblock/DocBlock/Tags/PropertyRead.php je #k:Aphpdocumentor-reflection-docblock/DocBlock/Tags/PropertyWrite.php je v Cphpdocumentor-reflection-docblock/DocBlock/Tags/Reference/Fqsen.php, je,%8Gphpdocumentor-reflection-docblock/DocBlock/Tags/Reference/Reference.php je Aphpdocumentor-reflection-docblock/DocBlock/Tags/Reference/Url.php jec[];phpdocumentor-reflection-docblock/DocBlock/Tags/Return_.php je N7phpdocumentor-reflection-docblock/DocBlock/Tags/See.php je :e9phpdocumentor-reflection-docblock/DocBlock/Tags/Since.phpW + jeW +1>:phpdocumentor-reflection-docblock/DocBlock/Tags/Source.php je [K?phpdocumentor-reflection-docblock/DocBlock/Tags/TagWithType.php je;u:phpdocumentor-reflection-docblock/DocBlock/Tags/Throws.php je"G8phpdocumentor-reflection-docblock/DocBlock/Tags/Uses.php> + je>  -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 je u:ڤ;phpdocumentor-reflection-docblock/DocBlock/Tags/Version.php + je +@S5phpdocumentor-reflection-docblock/DocBlockFactory.php$ je$br>phpdocumentor-reflection-docblock/DocBlockFactoryInterface.php je)%ߤ=phpdocumentor-reflection-docblock/Exception/PcreException.php je V)phpdocumentor-reflection-docblock/LICENSE8 je8ʤ+phpdocumentor-reflection-docblock/Utils.php je -phpdocumentor-type-resolver/FqsenResolver.php jej^#phpdocumentor-type-resolver/LICENSE8 je8ʤ*phpdocumentor-type-resolver/PseudoType.phpu jeu]\:phpdocumentor-type-resolver/PseudoTypes/CallableString.php` je`Z2phpdocumentor-type-resolver/PseudoTypes/False_.php jeo䈤=phpdocumentor-type-resolver/PseudoTypes/HtmlEscapedString.phpg jegwe8phpdocumentor-type-resolver/PseudoTypes/IntegerRange.php% je%R1phpdocumentor-type-resolver/PseudoTypes/List_.php jewu9phpdocumentor-type-resolver/PseudoTypes/LiteralString.php^ je^=oNW;phpdocumentor-type-resolver/PseudoTypes/LowercaseString.phpb jeb7 ;phpdocumentor-type-resolver/PseudoTypes/NegativeInteger.php[ je[DEۤCphpdocumentor-type-resolver/PseudoTypes/NonEmptyLowercaseString.phpt jet):phpdocumentor-type-resolver/PseudoTypes/NonEmptyString.phpa jea²,9phpdocumentor-type-resolver/PseudoTypes/NumericString.php^ je^8M4phpdocumentor-type-resolver/PseudoTypes/Numeric_.php je=k;phpdocumentor-type-resolver/PseudoTypes/PositiveInteger.php[ je[H7phpdocumentor-type-resolver/PseudoTypes/TraitString.phpZ jeZgC1phpdocumentor-type-resolver/PseudoTypes/True_.php jel$phpdocumentor-type-resolver/Type.php jeb&,phpdocumentor-type-resolver/TypeResolver.php%U je%UU2phpdocumentor-type-resolver/Types/AbstractList.phpt jett4phpdocumentor-type-resolver/Types/AggregatedType.php + je +Hɵ.phpdocumentor-type-resolver/Types/ArrayKey.php jePĤ,phpdocumentor-type-resolver/Types/Array_.php je4-phpdocumentor-type-resolver/Types/Boolean.phpn jenrĤ/phpdocumentor-type-resolver/Types/Callable_.php{ je{E1phpdocumentor-type-resolver/Types/ClassString.phpC jeCrvy0phpdocumentor-type-resolver/Types/Collection.php je?.phpdocumentor-type-resolver/Types/Compound.php je>7-phpdocumentor-type-resolver/Types/Context.php je ]Z4phpdocumentor-type-resolver/Types/ContextFactory.php6 je6\0phpdocumentor-type-resolver/Types/Expression.php8 je8g,phpdocumentor-type-resolver/Types/Float_.phpm jem)J-phpdocumentor-type-resolver/Types/Integer.phpj jejv5phpdocumentor-type-resolver/Types/InterfaceString.php je2phpdocumentor-type-resolver/Types/Intersection.php jeUz$/phpdocumentor-type-resolver/Types/Iterable_.php? je?Q8,phpdocumentor-type-resolver/Types/Mixed_.php je3i,phpdocumentor-type-resolver/Types/Never_.php jej+phpdocumentor-type-resolver/Types/Null_.phpx jexs.phpdocumentor-type-resolver/Types/Nullable.phpR jeRCp\-phpdocumentor-type-resolver/Types/Object_.php jewEhN-phpdocumentor-type-resolver/Types/Parent_.php jeO!./phpdocumentor-type-resolver/Types/Resource_.php jeŞX,phpdocumentor-type-resolver/Types/Scalar.php je+phpdocumentor-type-resolver/Types/Self_.php jeoȤ-phpdocumentor-type-resolver/Types/Static_.php je8-phpdocumentor-type-resolver/Types/String_.phps jesH*phpdocumentor-type-resolver/Types/This.phpY jeY^?ֈ+phpdocumentor-type-resolver/Types/Void_.php jekphpspec-prophecy/LICENSE} je} ߦ&phpspec-prophecy/Prophecy/Argument.php] je]eQ8phpspec-prophecy/Prophecy/Argument/ArgumentsWildcard.php je N<:phpspec-prophecy/Prophecy/Argument/Token/AnyValueToken.php jeIZ%%;phpspec-prophecy/Prophecy/Argument/Token/AnyValuesToken.php je'`Bphpspec-prophecy/Prophecy/Argument/Token/ApproximateValueToken.phpm jem٬c<phpspec-prophecy/Prophecy/Argument/Token/ArrayCountToken.phpQ jeQ_穤<phpspec-prophecy/Prophecy/Argument/Token/ArrayEntryToken.php jeRAphpspec-prophecy/Prophecy/Argument/Token/ArrayEveryEntryToken.php je#:phpspec-prophecy/Prophecy/Argument/Token/CallbackToken.php jef"<phpspec-prophecy/Prophecy/Argument/Token/ExactValueToken.php je :٤@phpspec-prophecy/Prophecy/Argument/Token/IdenticalValueToken.php je49phpspec-prophecy/Prophecy/Argument/Token/InArrayToken.php jeͪ!<phpspec-prophecy/Prophecy/Argument/Token/LogicalAndToken.php je<phpspec-prophecy/Prophecy/Argument/Token/LogicalNotToken.phpA jeA<phpspec-prophecy/Prophecy/Argument/Token/NotInArrayToken.php je=phpspec-prophecy/Prophecy/Argument/Token/ObjectStateToken.php + je +#"lV@phpspec-prophecy/Prophecy/Argument/Token/StringContainsToken.php- je-3xD;phpspec-prophecy/Prophecy/Argument/Token/TokenInterface.php jeG66phpspec-prophecy/Prophecy/Argument/Token/TypeToken.php je$'phpspec-prophecy/Prophecy/Call/Call.php je΂-phpspec-prophecy/Prophecy/Call/CallCenter.php je\%-j:phpspec-prophecy/Prophecy/Comparator/ClosureComparator.php jeO0phpspec-prophecy/Prophecy/Comparator/Factory.php jeU%8phpspec-prophecy/Prophecy/Comparator/FactoryProvider.php jek;phpspec-prophecy/Prophecy/Comparator/ProphecyComparator.php  je 3phpspec-prophecy/Prophecy/Doubler/CachedDoubler.php jeUWDphpspec-prophecy/Prophecy/Doubler/ClassPatch/ClassPatchInterface.phph jehq!ʤHphpspec-prophecy/Prophecy/Doubler/ClassPatch/DisableConstructorPatch.php je,g=phpspec-prophecy/Prophecy/Doubler/ClassPatch/KeywordPatch.php' je'?phpspec-prophecy/Prophecy/Doubler/ClassPatch/MagicCallPatch.php je Q)7Ephpspec-prophecy/Prophecy/Doubler/ClassPatch/ProphecySubjectPatch.php$ je$ bBۀPphpspec-prophecy/Prophecy/Doubler/ClassPatch/ReflectionClassNewInstancePatch.php je +,Aphpspec-prophecy/Prophecy/Doubler/ClassPatch/SplFileInfoPatch.php@ je@ YyG?phpspec-prophecy/Prophecy/Doubler/ClassPatch/ThrowablePatch.php" je" aԤAphpspec-prophecy/Prophecy/Doubler/ClassPatch/TraversablePatch.php je wp5phpspec-prophecy/Prophecy/Doubler/DoubleInterface.php jeBۤ-phpspec-prophecy/Prophecy/Doubler/Doubler.php jePvlBphpspec-prophecy/Prophecy/Doubler/Generator/ClassCodeGenerator.php je Wy<phpspec-prophecy/Prophecy/Doubler/Generator/ClassCreator.phpb jebH1ؤ;phpspec-prophecy/Prophecy/Doubler/Generator/ClassMirror.php# je#Aphpspec-prophecy/Prophecy/Doubler/Generator/Node/ArgumentNode.php jeZfEphpspec-prophecy/Prophecy/Doubler/Generator/Node/ArgumentTypeNode.php jeˤ>phpspec-prophecy/Prophecy/Doubler/Generator/Node/ClassNode.phpN jeN׉ ?phpspec-prophecy/Prophecy/Doubler/Generator/Node/MethodNode.php jeCphpspec-prophecy/Prophecy/Doubler/Generator/Node/ReturnTypeNode.php jeCٮEphpspec-prophecy/Prophecy/Doubler/Generator/Node/TypeNodeAbstract.php je eCphpspec-prophecy/Prophecy/Doubler/Generator/ReflectionInterface.php je YAphpspec-prophecy/Prophecy/Doubler/Generator/TypeHintReference.php" je"&0phpspec-prophecy/Prophecy/Doubler/LazyDouble.php je 3phpspec-prophecy/Prophecy/Doubler/NameGenerator.php je,ôyDphpspec-prophecy/Prophecy/Exception/Call/UnexpectedCallException.php jeOEphpspec-prophecy/Prophecy/Exception/Doubler/ClassCreatorException.phpD jeDyXDphpspec-prophecy/Prophecy/Exception/Doubler/ClassMirrorException.phpd jedv48Fphpspec-prophecy/Prophecy/Exception/Doubler/ClassNotFoundException.php je}:?phpspec-prophecy/Prophecy/Exception/Doubler/DoubleException.php jeV"^@phpspec-prophecy/Prophecy/Exception/Doubler/DoublerException.php jehJphpspec-prophecy/Prophecy/Exception/Doubler/InterfaceNotFoundException.php! je!R3Lphpspec-prophecy/Prophecy/Exception/Doubler/MethodNotExtendableException.php je[Gphpspec-prophecy/Prophecy/Exception/Doubler/MethodNotFoundException.php je#kJphpspec-prophecy/Prophecy/Exception/Doubler/ReturnByReferenceException.php jeL?1phpspec-prophecy/Prophecy/Exception/Exception.php jex@phpspec-prophecy/Prophecy/Exception/InvalidArgumentException.php je󱙤Ephpspec-prophecy/Prophecy/Exception/Prediction/AggregateException.php; je;.Lphpspec-prophecy/Prophecy/Exception/Prediction/FailedPredictionException.phpg jeg3'}}Cphpspec-prophecy/Prophecy/Exception/Prediction/NoCallsException.php jeZFphpspec-prophecy/Prophecy/Exception/Prediction/PredictionException.php jeR2ͤPphpspec-prophecy/Prophecy/Exception/Prediction/UnexpectedCallsCountException.php  je ڶKphpspec-prophecy/Prophecy/Exception/Prediction/UnexpectedCallsException.php jeHphpspec-prophecy/Prophecy/Exception/Prophecy/MethodProphecyException.phpo jeoHphpspec-prophecy/Prophecy/Exception/Prophecy/ObjectProphecyException.php jeg6ڤBphpspec-prophecy/Prophecy/Exception/Prophecy/ProphecyException.php jeD7jIphpspec-prophecy/Prophecy/PhpDocumentor/ClassAndInterfaceTagRetriever.php\ je\,|Ϥ=phpspec-prophecy/Prophecy/PhpDocumentor/ClassTagRetriever.php jeGphpspec-prophecy/Prophecy/PhpDocumentor/MethodTagRetrieverInterface.php jeB7phpspec-prophecy/Prophecy/Prediction/CallPrediction.php" je"Ҷڤ<phpspec-prophecy/Prophecy/Prediction/CallTimesPrediction.phpH jeH ,;phpspec-prophecy/Prophecy/Prediction/CallbackPrediction.php je :phpspec-prophecy/Prophecy/Prediction/NoCallsPrediction.php> je>y<phpspec-prophecy/Prophecy/Prediction/PredictionInterface.php jeD5phpspec-prophecy/Prophecy/Promise/CallbackPromise.php# je#26phpspec-prophecy/Prophecy/Promise/PromiseInterface.phpa jeaĶ= +;phpspec-prophecy/Prophecy/Promise/ReturnArgumentPromise.phpE jeEj3phpspec-prophecy/Prophecy/Promise/ReturnPromise.phpu jeuR2phpspec-prophecy/Prophecy/Promise/ThrowPromise.php + je +cb5phpspec-prophecy/Prophecy/Prophecy/MethodProphecy.phpt< jet<n(5phpspec-prophecy/Prophecy/Prophecy/ObjectProphecy.php jeVK%8phpspec-prophecy/Prophecy/Prophecy/ProphecyInterface.phpq jeqhRw¤?phpspec-prophecy/Prophecy/Prophecy/ProphecySubjectInterface.php jeġAr/phpspec-prophecy/Prophecy/Prophecy/Revealer.php je m8phpspec-prophecy/Prophecy/Prophecy/RevealerInterface.phpG jeGWnZ%phpspec-prophecy/Prophecy/Prophet.php jeNȤ-phpspec-prophecy/Prophecy/Util/ExportUtil.php jet-phpspec-prophecy/Prophecy/Util/StringUtil.php + je +v|= phpunit.xsdRF jeRFAgphpunit/Exception.php jea#phpunit/Framework/Assert.phpc jectN&phpunit/Framework/Assert/Functions.php  je s0phpunit/Framework/Constraint/Boolean/IsFalse.php je/phpunit/Framework/Constraint/Boolean/IsTrue.php je})phpunit/Framework/Constraint/Callback.php? je? +b2phpunit/Framework/Constraint/Cardinality/Count.phpj jej xR@ؤ8phpunit/Framework/Constraint/Cardinality/GreaterThan.php jeh,d}4phpunit/Framework/Constraint/Cardinality/IsEmpty.php jehf5phpunit/Framework/Constraint/Cardinality/LessThan.php jea T5phpunit/Framework/Constraint/Cardinality/SameSize.php_ je_uŤ+phpunit/Framework/Constraint/Constraint.php" je"*yK1phpunit/Framework/Constraint/Equality/IsEqual.php je \hh?phpunit/Framework/Constraint/Equality/IsEqualCanonicalizing.php + je ~=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 je6@!@phpunit/Framework/Constraint/Traversable/TraversableContains.php jeEphpunit/Framework/Constraint/Traversable/TraversableContainsEqual.phpa jeawAIphpunit/Framework/Constraint/Traversable/TraversableContainsIdentical.php' je'sӤDphpunit/Framework/Constraint/Traversable/TraversableContainsOnly.php je RuФ2phpunit/Framework/Constraint/Type/IsInstanceOf.php: je:@,phpunit/Framework/Constraint/Type/IsNull.php je?),phpunit/Framework/Constraint/Type/IsType.php jeGȤ+phpunit/Framework/DataProviderTestSuite.php je\8&phpunit/Framework/Error/Deprecated.phpz jezV!phpunit/Framework/Error/Error.phpl jel]"phpunit/Framework/Error/Notice.phpv jevˤ#phpunit/Framework/Error/Warning.phpw jewG#phpunit/Framework/ErrorTestCase.php jecȶAphpunit/Framework/Exception/ActualValueIsNotAnObjectException.php je`B4phpunit/Framework/Exception/AssertionFailedError.php je5phpunit/Framework/Exception/CodeCoverageException.php je[Sphpunit/Framework/Exception/ComparisonMethodDoesNotAcceptParameterTypeException.phpk jek:phpunit/Framework/MockObject/Builder/InvocationStubber.php je8phpunit/Framework/MockObject/Builder/MethodNameMatch.phpw jewTy8phpunit/Framework/MockObject/Builder/ParametersMatch.php jeڃ-phpunit/Framework/MockObject/Builder/Stub.php je(3phpunit/Framework/MockObject/ConfigurableMethod.php jeAphpunit/Framework/MockObject/Exception/BadMethodCallException.php jeΫXGphpunit/Framework/MockObject/Exception/CannotUseAddMethodsException.php5 je5{Hphpunit/Framework/MockObject/Exception/CannotUseOnlyMethodsException.phpE jeEFphpunit/Framework/MockObject/Exception/ClassAlreadyExistsException.php je@phpunit/Framework/MockObject/Exception/ClassIsFinalException.php je()Cphpunit/Framework/MockObject/Exception/ClassIsReadonlyException.php jeOuXYphpunit/Framework/MockObject/Exception/ConfigurableMethodsAlreadyInitializedException.php  je ɅWCphpunit/Framework/MockObject/Exception/DuplicateMethodException.php jey4phpunit/Framework/MockObject/Exception/Exception.php jeB'Kphpunit/Framework/MockObject/Exception/IncompatibleReturnValueException.php je3dfEphpunit/Framework/MockObject/Exception/InvalidMethodNameException.php je ܤHphpunit/Framework/MockObject/Exception/MatchBuilderNotFoundException.php jeLphpunit/Framework/MockObject/Exception/MatcherAlreadyRegisteredException.php jez'Lphpunit/Framework/MockObject/Exception/MethodCannotBeConfiguredException.php je}QOphpunit/Framework/MockObject/Exception/MethodNameAlreadyConfiguredException.php jeӁƤKphpunit/Framework/MockObject/Exception/MethodNameNotConfiguredException.php~ je~x1)Uphpunit/Framework/MockObject/Exception/MethodParametersAlreadyConfiguredException.php je rYphpunit/Framework/MockObject/Exception/OriginalConstructorInvocationRequiredException.php jeک>phpunit/Framework/MockObject/Exception/ReflectionException.php je.ؔLphpunit/Framework/MockObject/Exception/ReturnValueNotConfiguredException.php6 je6?먙;phpunit/Framework/MockObject/Exception/RuntimeException.php je_|Mphpunit/Framework/MockObject/Exception/SoapExtensionNotAvailableException.php jez@phpunit/Framework/MockObject/Exception/UnknownClassException.php je5uW@phpunit/Framework/MockObject/Exception/UnknownTraitException.php jeq¥?phpunit/Framework/MockObject/Exception/UnknownTypeException.php je~*phpunit/Framework/MockObject/Generator.phpb jebiEۤ6phpunit/Framework/MockObject/Generator/deprecation.tpl; je;O5s7phpunit/Framework/MockObject/Generator/intersection.tplL jeL-X7phpunit/Framework/MockObject/Generator/mocked_class.tpl jewZ8phpunit/Framework/MockObject/Generator/mocked_method.tplF jeFKFphpunit/Framework/MockObject/Generator/mocked_method_never_or_void.tpl jep?phpunit/Framework/MockObject/Generator/mocked_static_method.tpl je 4R9phpunit/Framework/MockObject/Generator/proxied_method.tpl} je}@ėGphpunit/Framework/MockObject/Generator/proxied_method_never_or_void.tplv jevT6phpunit/Framework/MockObject/Generator/trait_class.tplQ jeQ<Ȥ5phpunit/Framework/MockObject/Generator/wsdl_class.tpl je6phpunit/Framework/MockObject/Generator/wsdl_method.tpl< je<i+phpunit/Framework/MockObject/Invocation.php jeid2phpunit/Framework/MockObject/InvocationHandler.php: je:ˤ(phpunit/Framework/MockObject/Matcher.php jeD-5phpunit/Framework/MockObject/MethodNameConstraint.php + je +A1|,phpunit/Framework/MockObject/MockBuilder.phpY+ jeY+ϴ=*phpunit/Framework/MockObject/MockClass.php je'C+phpunit/Framework/MockObject/MockMethod.phpz& jez&p.phpunit/Framework/MockObject/MockMethodSet.php8 je8G\+phpunit/Framework/MockObject/MockObject.php jebt*phpunit/Framework/MockObject/MockTrait.php je&nä)phpunit/Framework/MockObject/MockType.php jeFFt5phpunit/Framework/MockObject/Rule/AnyInvokedCount.phpj jej`Ť3phpunit/Framework/MockObject/Rule/AnyParameters.php je~';phpunit/Framework/MockObject/Rule/ConsecutiveParameters.php~ je~ 5phpunit/Framework/MockObject/Rule/InvocationOrder.php jeLDӤ4phpunit/Framework/MockObject/Rule/InvokedAtIndex.php, je,kK9phpunit/Framework/MockObject/Rule/InvokedAtLeastCount.php jeB8phpunit/Framework/MockObject/Rule/InvokedAtLeastOnce.php- je- (8phpunit/Framework/MockObject/Rule/InvokedAtMostCount.php jegY2phpunit/Framework/MockObject/Rule/InvokedCount.php je ^ 0phpunit/Framework/MockObject/Rule/MethodName.php je +WG0phpunit/Framework/MockObject/Rule/Parameters.phpQ jeQ`g|4phpunit/Framework/MockObject/Rule/ParametersRule.phpc jec?(%phpunit/Framework/MockObject/Stub.php jeŎ6phpunit/Framework/MockObject/Stub/ConsecutiveCalls.php  je ./phpunit/Framework/MockObject/Stub/Exception.php( je(J4phpunit/Framework/MockObject/Stub/ReturnArgument.php je?}64phpunit/Framework/MockObject/Stub/ReturnCallback.php jeD0Ӥ5phpunit/Framework/MockObject/Stub/ReturnReference.php  je f0phpunit/Framework/MockObject/Stub/ReturnSelf.php4 je4DD0phpunit/Framework/MockObject/Stub/ReturnStub.php je4phpunit/Framework/MockObject/Stub/ReturnValueMap.php jeۤ*phpunit/Framework/MockObject/Stub/Stub.php3 je3>++phpunit/Framework/MockObject/Verifiable.php je̐ s!phpunit/Framework/Reorderable.php jez0$phpunit/Framework/SelfDescribing.php + je +s!phpunit/Framework/SkippedTest.php jeS.%phpunit/Framework/SkippedTestCase.php jeQKhphpunit/Framework/Test.php~ je~wt!phpunit/Framework/TestBuilder.php" je"14jphpunit/Framework/TestCase.php. je.] !phpunit/Framework/TestFailure.php je'q"phpunit/Framework/TestListener.phpr jerӪc^7phpunit/Framework/TestListenerDefaultImplementation.php' je'! phpunit/Framework/TestResult.php + je +rOphpunit/Framework/TestSuite.phpQd jeQd5ܛ'phpunit/Framework/TestSuiteIterator.php6 je6$ u%phpunit/Framework/WarningTestCase.php' je'n@ !phpunit/Runner/BaseTestRunner.php je C +)phpunit/Runner/DefaultTestResultCache.php! je!/i^phpunit/Runner/Exception.php jezZ-phpunit/Runner/Extension/ExtensionHandler.php je Az'phpunit/Runner/Extension/PharLoader.php je /4phpunit/Runner/Filter/ExcludeGroupFilterIterator.phps jes} +Z!phpunit/Runner/Filter/Factory.php jedcΤ-phpunit/Runner/Filter/GroupFilterIterator.php je=;4phpunit/Runner/Filter/IncludeGroupFilterIterator.phpr jerP;AD,phpunit/Runner/Filter/NameFilterIterator.phpv jev Z/phpunit/Runner/Hook/AfterIncompleteTestHook.php- je-zԤ)phpunit/Runner/Hook/AfterLastTestHook.php je0B֤*phpunit/Runner/Hook/AfterRiskyTestHook.php# je#dm,phpunit/Runner/Hook/AfterSkippedTestHook.php' je':/phpunit/Runner/Hook/AfterSuccessfulTestHook.php je5w*phpunit/Runner/Hook/AfterTestErrorHook.php# je#ݮ,phpunit/Runner/Hook/AfterTestFailureHook.php' je'2F%phpunit/Runner/Hook/AfterTestHook.php je;gA,phpunit/Runner/Hook/AfterTestWarningHook.php' je'':+phpunit/Runner/Hook/BeforeFirstTestHook.php jehWt&phpunit/Runner/Hook/BeforeTestHook.php je"bphpunit/Runner/Hook/Hook.php je. phpunit/Runner/Hook/TestHook.php jeZ_ ++phpunit/Runner/Hook/TestListenerAdapter.php je\6E&phpunit/Runner/NullTestResultCache.php jeW<phpunit/Runner/PhptTestCase.phpRV jeRVԴO'phpunit/Runner/ResultCacheExtension.php< je<6 _*phpunit/Runner/StandardTestSuiteLoader.php je;i Ȥ"phpunit/Runner/TestResultCache.php jeK"phpunit/Runner/TestSuiteLoader.php jeޤ"phpunit/Runner/TestSuiteSorter.php, je,kڤphpunit/Runner/Version.php jeԂ鄤'phpunit/TextUI/CliArguments/Builder.phpT jeTɣۤ-phpunit/TextUI/CliArguments/Configuration.php jeX)phpunit/TextUI/CliArguments/Exception.php je%zE&phpunit/TextUI/CliArguments/Mapper.php+, je+,'aphpunit/TextUI/Command.php`o je`o;e"'phpunit/TextUI/DefaultResultPrinter.phpY7 jeY7}G(J&phpunit/TextUI/Exception/Exception.php jeD{i0phpunit/TextUI/Exception/ReflectionException.php je Y-phpunit/TextUI/Exception/RuntimeException.php jeF;phpunit/TextUI/Exception/TestDirectoryNotFoundException.php je6phpunit/TextUI/Exception/TestFileNotFoundException.php jepCphpunit/TextUI/Help.php. je.  phpunit/TextUI/ResultPrinter.phpp jepܤphpunit/TextUI/TestRunner.php jeG"phpunit/TextUI/TestSuiteMapper.php je +;-=phpunit/TextUI/XmlConfiguration/CodeCoverage/CodeCoverage.php jerAphpunit/TextUI/XmlConfiguration/CodeCoverage/Filter/Directory.php jec{Kphpunit/TextUI/XmlConfiguration/CodeCoverage/Filter/DirectoryCollection.php jeju}Sphpunit/TextUI/XmlConfiguration/CodeCoverage/Filter/DirectoryCollectionIterator.php jeJ=phpunit/TextUI/XmlConfiguration/CodeCoverage/FilterMapper.php je}ݚ>phpunit/TextUI/XmlConfiguration/CodeCoverage/Report/Clover.php je=CAphpunit/TextUI/XmlConfiguration/CodeCoverage/Report/Cobertura.php jei>phpunit/TextUI/XmlConfiguration/CodeCoverage/Report/Crap4j.php jeG<phpunit/TextUI/XmlConfiguration/CodeCoverage/Report/Html.php jeE6;phpunit/TextUI/XmlConfiguration/CodeCoverage/Report/Php.php jepS<phpunit/TextUI/XmlConfiguration/CodeCoverage/Report/Text.php jeKkw;phpunit/TextUI/XmlConfiguration/CodeCoverage/Report/Xml.php je?u1phpunit/TextUI/XmlConfiguration/Configuration.php5 je5˞-phpunit/TextUI/XmlConfiguration/Exception.php jeN5+8phpunit/TextUI/XmlConfiguration/Filesystem/Directory.php je@Bphpunit/TextUI/XmlConfiguration/Filesystem/DirectoryCollection.php je1EqJphpunit/TextUI/XmlConfiguration/Filesystem/DirectoryCollectionIterator.php je&3phpunit/TextUI/XmlConfiguration/Filesystem/File.php je.P =phpunit/TextUI/XmlConfiguration/Filesystem/FileCollection.php~ je~]rEphpunit/TextUI/XmlConfiguration/Filesystem/FileCollectionIterator.phpf jefĤ-phpunit/TextUI/XmlConfiguration/Generator.php jeF /phpunit/TextUI/XmlConfiguration/Group/Group.php je9phpunit/TextUI/XmlConfiguration/Group/GroupCollection.php jeyAphpunit/TextUI/XmlConfiguration/Group/GroupCollectionIterator.phpq jeqY50phpunit/TextUI/XmlConfiguration/Group/Groups.php je@I*phpunit/TextUI/XmlConfiguration/Loader.php jecB1phpunit/TextUI/XmlConfiguration/Logging/Junit.php jeciG3phpunit/TextUI/XmlConfiguration/Logging/Logging.php je ]٤4phpunit/TextUI/XmlConfiguration/Logging/TeamCity.php je7Z鵤8phpunit/TextUI/XmlConfiguration/Logging/TestDox/Html.php jeV2ܤ8phpunit/TextUI/XmlConfiguration/Logging/TestDox/Text.php jeώ7phpunit/TextUI/XmlConfiguration/Logging/TestDox/Xml.php jet0phpunit/TextUI/XmlConfiguration/Logging/Text.php jeCn>phpunit/TextUI/XmlConfiguration/Migration/MigrationBuilder.php je r:Gphpunit/TextUI/XmlConfiguration/Migration/MigrationBuilderException.php jeUWĝ@phpunit/TextUI/XmlConfiguration/Migration/MigrationException.php je\ZHphpunit/TextUI/XmlConfiguration/Migration/Migrations/ConvertLogTypes.php jehoeOphpunit/TextUI/XmlConfiguration/Migration/Migrations/CoverageCloverToReport.phpX jeXijOphpunit/TextUI/XmlConfiguration/Migration/Migrations/CoverageCrap4jToReport.php je$i'Mphpunit/TextUI/XmlConfiguration/Migration/Migrations/CoverageHtmlToReport.php jeՄjLphpunit/TextUI/XmlConfiguration/Migration/Migrations/CoveragePhpToReport.phpF jeF^ӤMphpunit/TextUI/XmlConfiguration/Migration/Migrations/CoverageTextToReport.php jeV_Lphpunit/TextUI/XmlConfiguration/Migration/Migrations/CoverageXmlToReport.phpK jeK_ Qphpunit/TextUI/XmlConfiguration/Migration/Migrations/IntroduceCoverageElement.php jeUMphpunit/TextUI/XmlConfiguration/Migration/Migrations/LogToReportMigration.php jeUBphpunit/TextUI/XmlConfiguration/Migration/Migrations/Migration.php je'dphpunit/TextUI/XmlConfiguration/Migration/Migrations/MoveAttributesFromFilterWhitelistToCoverage.php jeU%5Yphpunit/TextUI/XmlConfiguration/Migration/Migrations/MoveAttributesFromRootToCoverage.phpC jeCcFXphpunit/TextUI/XmlConfiguration/Migration/Migrations/MoveWhitelistExcludesToCoverage.php jeXphpunit/TextUI/XmlConfiguration/Migration/Migrations/MoveWhitelistIncludesToCoverage.php jetSphpunit/TextUI/XmlConfiguration/Migration/Migrations/RemoveCacheTokensAttribute.php jewJphpunit/TextUI/XmlConfiguration/Migration/Migrations/RemoveEmptyFilter.php{ je{KGphpunit/TextUI/XmlConfiguration/Migration/Migrations/RemoveLogTypes.phpo jeo3Qphpunit/TextUI/XmlConfiguration/Migration/Migrations/UpdateSchemaLocationTo93.php jebJ6phpunit/TextUI/XmlConfiguration/Migration/Migrator.php jeo$V0phpunit/TextUI/XmlConfiguration/PHP/Constant.php7 je7$Ҥ:phpunit/TextUI/XmlConfiguration/PHP/ConstantCollection.phpl jel%(Bphpunit/TextUI/XmlConfiguration/PHP/ConstantCollectionIterator.php je}=Ƥ2phpunit/TextUI/XmlConfiguration/PHP/IniSetting.phpJ jeJOt<phpunit/TextUI/XmlConfiguration/PHP/IniSettingCollection.php jeޛ;Dphpunit/TextUI/XmlConfiguration/PHP/IniSettingCollectionIterator.php je/mo+phpunit/TextUI/XmlConfiguration/PHP/Php.php je6僤2phpunit/TextUI/XmlConfiguration/PHP/PhpHandler.phpw jew` +0phpunit/TextUI/XmlConfiguration/PHP/Variable.php jeN:phpunit/TextUI/XmlConfiguration/PHP/VariableCollection.phpl jelsB@٤Bphpunit/TextUI/XmlConfiguration/PHP/VariableCollectionIterator.php je!~gȤ5phpunit/TextUI/XmlConfiguration/PHPUnit/Extension.php je}Q?phpunit/TextUI/XmlConfiguration/PHPUnit/ExtensionCollection.php jeo;RGphpunit/TextUI/XmlConfiguration/PHPUnit/ExtensionCollectionIterator.php je|D?3phpunit/TextUI/XmlConfiguration/PHPUnit/PHPUnit.phplC jelCv;phpunit/TextUI/XmlConfiguration/TestSuite/TestDirectory.phpC jeC0Ephpunit/TextUI/XmlConfiguration/TestSuite/TestDirectoryCollection.php jeLCMphpunit/TextUI/XmlConfiguration/TestSuite/TestDirectoryCollectionIterator.php jen6phpunit/TextUI/XmlConfiguration/TestSuite/TestFile.php je?y@phpunit/TextUI/XmlConfiguration/TestSuite/TestFileCollection.php jeXHphpunit/TextUI/XmlConfiguration/TestSuite/TestFileCollectionIterator.phpz jezX17phpunit/TextUI/XmlConfiguration/TestSuite/TestSuite.php je8wAphpunit/TextUI/XmlConfiguration/TestSuite/TestSuiteCollection.php je/jIphpunit/TextUI/XmlConfiguration/TestSuite/TestSuiteCollectionIterator.php je+6$phpunit/Util/Annotation/DocBlock.php@ je@n"$phpunit/Util/Annotation/Registry.phpN + jeN +?caphpunit/Util/Blacklist.php jesphpunit/Util/Cloner.php je"Ɩܤphpunit/Util/Color.php jej?phpunit/Util/ErrorHandler.php je=phpunit/Util/Exception.php je다phpunit/Util/ExcludeList.php jefphpunit/Util/FileLoader.php je 'phpunit/Util/Filesystem.php jeܐphpunit/Util/Filter.php je l* phpunit/Util/GlobalState.php jel(phpunit/Util/InvalidDataSetException.php je1 phpunit/Util/Json.phpE jeE !phpunit/Util/Log/JUnit.phpb* jeb*}3phpunit/Util/Log/TeamCity.phpy& jey&4g'phpunit/Util/PHP/AbstractPhpProcess.php' je'-Eʤ&phpunit/Util/PHP/DefaultPhpProcess.phpz jezCp*phpunit/Util/PHP/Template/PhptTestCase.tpl je+phpunit/Util/PHP/Template/TestCaseClass.tpl je #,phpunit/Util/PHP/Template/TestCaseMethod.tpl* je* &phpunit/Util/PHP/WindowsPhpProcess.php je)aBphpunit/Util/Printer.php je shphpunit/Util/Reflection.php jeW챤"phpunit/Util/RegularExpression.php je0uR)phpunit/Util/Test.php] je]1fä*phpunit/Util/TestDox/CliTestDoxPrinter.php(* je(*@f*phpunit/Util/TestDox/HtmlResultPrinter.php je 3~ʤ'phpunit/Util/TestDox/NamePrettifier.php/" je/"p~J&phpunit/Util/TestDox/ResultPrinter.php" je"1q$'phpunit/Util/TestDox/TestDoxPrinter.php) je)K̤*phpunit/Util/TestDox/TextResultPrinter.php jeȹ!.)phpunit/Util/TestDox/XmlResultPrinter.php jeQ%phpunit/Util/TextTestListRenderer.php6 je6.phpunit/Util/Type.php je|ä*phpunit/Util/VersionComparisonOperator.php jeb,phpunit/Util/XdebugFilterScriptGenerator.phpw jewتphpunit/Util/Xml.php je̤phpunit/Util/Xml/Exception.php jeӤ0phpunit/Util/Xml/FailedSchemaDetectionResult.php je#Sphpunit/Util/Xml/Loader.php je ,?*phpunit/Util/Xml/SchemaDetectionResult.php je4χz#phpunit/Util/Xml/SchemaDetector.php- je-!phpunit/Util/Xml/SchemaFinder.php jeS%phpunit/Util/Xml/SnapshotNodeList.phpH jeH ^d4phpunit/Util/Xml/SuccessfulSchemaDetectionResult.php' je'g%phpunit/Util/Xml/ValidationResult.php jexv:phpunit/Util/Xml/Validator.php jeV$phpunit/Util/XmlTestListRenderer.php + je +8sbom.xml +/ je +/6|schema/8.5.xsdB jeB贅schema/9.2.xsdB jeB|lsebastian-cli-parser/LICENSE jeusebastian-cli-parser/Parser.php jekM<sebastian-cli-parser/exceptions/AmbiguousOptionException.phpF jeFm\-sebastian-cli-parser/exceptions/Exception.phpu jeuӫGsebastian-cli-parser/exceptions/OptionDoesNotAllowArgumentException.php_ je_|13Jsebastian-cli-parser/exceptions/RequiredOptionArgumentMissingException.phph jehC:sebastian-cli-parser/exceptions/UnknownOptionException.php? je?vD*sebastian-code-unit-reverse-lookup/LICENSE je3G (-sebastian-code-unit-reverse-lookup/Wizard.php je }Z['sebastian-code-unit/ClassMethodUnit.php je@[!sebastian-code-unit/ClassUnit.php jeF sebastian-code-unit/CodeUnit.php~% je~%D){*sebastian-code-unit/CodeUnitCollection.php jeJ2sebastian-code-unit/CodeUnitCollectionIterator.php; je;Lʤ$sebastian-code-unit/FunctionUnit.php je`+sebastian-code-unit/InterfaceMethodUnit.php jeǦ%sebastian-code-unit/InterfaceUnit.php jecsebastian-code-unit/LICENSE  je psebastian-code-unit/Mapper.php- je-#'sebastian-code-unit/TraitMethodUnit.php jeqz!sebastian-code-unit/TraitUnit.php jeXA,sebastian-code-unit/exceptions/Exception.phps jestg;sebastian-code-unit/exceptions/InvalidCodeUnitException.php je6-3sebastian-code-unit/exceptions/NoTraitException.php jeQ36sebastian-code-unit/exceptions/ReflectionException.php je$(sebastian-comparator/ArrayComparator.phpu jeuEmhf#sebastian-comparator/Comparator.php jet*sebastian-comparator/ComparisonFailure.php je %*sebastian-comparator/DOMNodeComparator.php je 1i+sebastian-comparator/DateTimeComparator.php je KQ)sebastian-comparator/DoubleComparator.php je:n,sebastian-comparator/ExceptionComparator.php je1 sebastian-comparator/Factory.php je?Nsebastian-comparator/LICENSE  je =(-sebastian-comparator/MockObjectComparator.php jeI*sebastian-comparator/NumericComparator.php3 je3 i{l)sebastian-comparator/ObjectComparator.phpX jeX ׌+sebastian-comparator/ResourceComparator.php jeJ)sebastian-comparator/ScalarComparator.php/ je/ dF3sebastian-comparator/SplObjectStorageComparator.php je?/'sebastian-comparator/TypeComparator.php jecX\-sebastian-comparator/exceptions/Exception.phpv jevEᵤ4sebastian-comparator/exceptions/RuntimeException.php jeV'#sebastian-complexity/Calculator.phpe jee (6.sebastian-complexity/Complexity/Complexity.phpQ jeQl8sebastian-complexity/Complexity/ComplexityCollection.php jeil@sebastian-complexity/Complexity/ComplexityCollectionIterator.php, je,e,sebastian-complexity/Exception/Exception.phpv jev73sebastian-complexity/Exception/RuntimeException.php jeCdWsebastian-complexity/LICENSE je=ݤ=sebastian-complexity/Visitor/ComplexityCalculatingVisitor.php je OGsebastian-complexity/Visitor/CyclomaticComplexityCalculatingVisitor.php  je 7Ysebastian-diff/Chunk.php_ je_vsebastian-diff/Diff.phpj jejbXAsebastian-diff/Differ.php $ je $wkz3sebastian-diff/Exception/ConfigurationException.php= je=1/Ff&sebastian-diff/Exception/Exception.phpj jej05sebastian-diff/Exception/InvalidArgumentException.php jeqsebastian-diff/LICENSE  je a1sebastian-diff/Line.phpL jeL +q5sebastian-diff/LongestCommonSubsequenceCalculator.php je}e7zDsebastian-diff/MemoryEfficientLongestCommonSubsequenceCalculator.php{ je{ d^4sebastian-diff/Output/AbstractChunkOutputBuilder.php je\t/sebastian-diff/Output/DiffOnlyOutputBuilder.phpz jezc4sebastian-diff/Output/DiffOutputBuilderInterface.php jeV8sebastian-diff/Output/StrictUnifiedDiffOutputBuilder.php( je(kv2sebastian-diff/Output/UnifiedDiffOutputBuilder.php> je>'q)sebastian-diff/Parser.php je X{Bsebastian-diff/TimeEfficientLongestCommonSubsequenceCalculator.php0 je0 B !sebastian-environment/Console.php jeP1Ťsebastian-environment/LICENSE jeFy٤)sebastian-environment/OperatingSystem.php jē!sebastian-environment/Runtime.php je4sebastian-exporter/Exporter.phpx$ jex$sebastian-exporter/LICENSE je 5٤'sebastian-global-state/CodeExporter.php je &sebastian-global-state/ExcludeList.php + je +R{sebastian-global-state/LICENSE jeJ#sebastian-global-state/Restorer.php je9}b#sebastian-global-state/Snapshot.php* je*X%/sebastian-global-state/exceptions/Exception.phpy jeyJ6sebastian-global-state/exceptions/RuntimeException.php je;#sebastian-lines-of-code/Counter.php jeH5/sebastian-lines-of-code/Exception/Exception.phpz jez aV>sebastian-lines-of-code/Exception/IllogicalValuesException.php jeG<sebastian-lines-of-code/Exception/NegativeValueException.php je +ڤ6sebastian-lines-of-code/Exception/RuntimeException.php jeKsebastian-lines-of-code/LICENSE jebS~/sebastian-lines-of-code/LineCountingVisitor.php je~A'sebastian-lines-of-code/LinesOfCode.php je fӤ*sebastian-object-enumerator/Enumerator.php jex})sebastian-object-enumerator/Exception.php je}Ȥ8sebastian-object-enumerator/InvalidArgumentException.php jeâ(sebastian-object-reflector/Exception.php jeЬۤ7sebastian-object-reflector/InvalidArgumentException.php je +M.sebastian-object-reflector/ObjectReflector.php je_'sebastian-recursion-context/Context.phpB jeB=3,<3.2.2" + }, + "require-dev": { + "doctrine/collections": "^1.6.8", + "doctrine/common": "^2.13.3 || ^3.2.2", + "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" + }, + "type": "library", + "autoload": { + "files": [ + "src/DeepCopy/deep_copy.php" + ], + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Create deep copies (clones) of your objects", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ], + "support": { + "issues": "https://github.com/myclabs/DeepCopy/issues", + "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1" + }, + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "type": "tidelift" + } + ], + "time": "2023-03-08T13:26:56+00:00" + }, + { + "name": "nikic/php-parser", + "version": "v4.17.1", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", + "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": ">=7.0" + }, + "require-dev": { + "ircmaxell/php-yacc": "^0.0.7", + "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" + }, + "bin": [ + "bin/php-parse" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.9-dev" + } + }, + "autoload": { + "psr-4": { + "PhpParser\\": "lib/PhpParser" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov" + } + ], + "description": "A PHP parser written in PHP", + "keywords": [ + "parser", + "php" + ], + "support": { + "issues": "https://github.com/nikic/PHP-Parser/issues", + "source": "https://github.com/nikic/PHP-Parser/tree/v4.17.1" + }, + "time": "2023-08-13T19:53:39+00:00" + }, + { + "name": "phar-io/manifest", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/phar-io/manifest.git", + "reference": "97803eca37d319dfa7826cc2437fc020857acb53" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", + "reference": "97803eca37d319dfa7826cc2437fc020857acb53", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-phar": "*", + "ext-xmlwriter": "*", + "phar-io/version": "^3.0.1", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "support": { + "issues": "https://github.com/phar-io/manifest/issues", + "source": "https://github.com/phar-io/manifest/tree/2.0.3" + }, + "time": "2021-07-20T11:28:43+00:00" + }, + { + "name": "phar-io/version", + "version": "3.2.1", + "source": { + "type": "git", + "url": "https://github.com/phar-io/version.git", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Library for handling version information and constraints", + "support": { + "issues": "https://github.com/phar-io/version/issues", + "source": "https://github.com/phar-io/version/tree/3.2.1" + }, + "time": "2022-02-21T01:04:05+00:00" + }, + { + "name": "phpdocumentor/reflection-common", + "version": "2.2.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-2.x": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" + } + ], + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", + "keywords": [ + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" + ], + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", + "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" + }, + "time": "2020-06-27T09:03:43+00:00" + }, + { + "name": "phpdocumentor/reflection-docblock", + "version": "5.3.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "622548b623e81ca6d78b721c5e029f4ce664f170" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170", + "reference": "622548b623e81ca6d78b721c5e029f4ce664f170", + "shasum": "" + }, + "require": { + "ext-filter": "*", + "php": "^7.2 || ^8.0", + "phpdocumentor/reflection-common": "^2.2", + "phpdocumentor/type-resolver": "^1.3", + "webmozart/assert": "^1.9.1" + }, + "require-dev": { + "mockery/mockery": "~1.3.2", + "psalm/phar": "^4.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + }, + { + "name": "Jaap van Otterdijk", + "email": "account@ijaap.nl" + } + ], + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0" + }, + "time": "2021-10-19T17:43:47+00:00" + }, + { + "name": "phpdocumentor/type-resolver", + "version": "1.6.1", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "77a32518733312af16a44300404e945338981de3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/77a32518733312af16a44300404e945338981de3", + "reference": "77a32518733312af16a44300404e945338981de3", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0", + "phpdocumentor/reflection-common": "^2.0" + }, + "require-dev": { + "ext-tokenizer": "*", + "psalm/phar": "^4.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-1.x": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", + "support": { + "issues": "https://github.com/phpDocumentor/TypeResolver/issues", + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.1" + }, + "time": "2022-03-15T21:29:03+00:00" + }, + { + "name": "phpspec/prophecy", + "version": "v1.17.0", + "source": { + "type": "git", + "url": "https://github.com/phpspec/prophecy.git", + "reference": "15873c65b207b07765dbc3c95d20fdf4a320cbe2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/15873c65b207b07765dbc3c95d20fdf4a320cbe2", + "reference": "15873c65b207b07765dbc3c95d20fdf4a320cbe2", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.2 || ^2.0", + "php": "^7.2 || 8.0.* || 8.1.* || 8.2.*", + "phpdocumentor/reflection-docblock": "^5.2", + "sebastian/comparator": "^3.0 || ^4.0", + "sebastian/recursion-context": "^3.0 || ^4.0" + }, + "require-dev": { + "phpspec/phpspec": "^6.0 || ^7.0", + "phpstan/phpstan": "^1.9", + "phpunit/phpunit": "^8.0 || ^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Prophecy\\": "src/Prophecy" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + }, + { + "name": "Marcello Duarte", + "email": "marcello.duarte@gmail.com" + } + ], + "description": "Highly opinionated mocking framework for PHP 5.3+", + "homepage": "https://github.com/phpspec/prophecy", + "keywords": [ + "Double", + "Dummy", + "fake", + "mock", + "spy", + "stub" + ], + "support": { + "issues": "https://github.com/phpspec/prophecy/issues", + "source": "https://github.com/phpspec/prophecy/tree/v1.17.0" + }, + "time": "2023-02-02T15:41:36+00:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "9.2.29", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "6a3a87ac2bbe33b25042753df8195ba4aa534c76" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/6a3a87ac2bbe33b25042753df8195ba4aa534c76", + "reference": "6a3a87ac2bbe33b25042753df8195ba4aa534c76", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "ext-xmlwriter": "*", + "nikic/php-parser": "^4.15", + "php": ">=7.3", + "phpunit/php-file-iterator": "^3.0.3", + "phpunit/php-text-template": "^2.0.2", + "sebastian/code-unit-reverse-lookup": "^2.0.2", + "sebastian/complexity": "^2.0", + "sebastian/environment": "^5.1.2", + "sebastian/lines-of-code": "^1.0.3", + "sebastian/version": "^3.0.1", + "theseer/tokenizer": "^1.2.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-pcov": "PHP extension that provides line coverage", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "9.2-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", + "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.29" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-09-19T04:57:46+00:00" + }, + { + "name": "phpunit/php-file-iterator", + "version": "3.0.6", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2021-12-02T12:48:52+00:00" + }, + { + "name": "phpunit/php-invoker", + "version": "3.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-invoker.git", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "ext-pcntl": "*", + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-pcntl": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Invoke callables with a timeout", + "homepage": "https://github.com/sebastianbergmann/php-invoker/", + "keywords": [ + "process" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-invoker/issues", + "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:58:55+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-text-template/issues", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T05:33:50+00:00" + }, + { + "name": "phpunit/php-timer", + "version": "5.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-timer/issues", + "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:16:10+00:00" + }, + { + "name": "sebastian/cli-parser", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/cli-parser.git", + "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for parsing CLI options", + "homepage": "https://github.com/sebastianbergmann/cli-parser", + "support": { + "issues": "https://github.com/sebastianbergmann/cli-parser/issues", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:08:49+00:00" + }, + { + "name": "sebastian/code-unit", + "version": "1.0.8", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit.git", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the PHP code units", + "homepage": "https://github.com/sebastianbergmann/code-unit", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit/issues", + "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:08:54+00:00" + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Looks up which function or method a line of code belongs to", + "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:30:19+00:00" + }, + { + "name": "sebastian/comparator", + "version": "4.0.8", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "fa0f136dd2334583309d32b62544682ee972b51a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a", + "reference": "fa0f136dd2334583309d32b62544682ee972b51a", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/diff": "^4.0", + "sebastian/exporter": "^4.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "https://github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/comparator/issues", + "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.8" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2022-09-14T12:41:17+00:00" + }, + { + "name": "sebastian/complexity", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/complexity.git", + "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", + "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.7", + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for calculating the complexity of PHP code units", + "homepage": "https://github.com/sebastianbergmann/complexity", + "support": { + "issues": "https://github.com/sebastianbergmann/complexity/issues", + "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T15:52:27+00:00" + }, + { + "name": "sebastian/diff", + "version": "4.0.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/74be17022044ebaaecfdf0c5cd504fc9cd5a7131", + "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3", + "symfony/process": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff", + "udiff", + "unidiff", + "unified diff" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/diff/issues", + "source": "https://github.com/sebastianbergmann/diff/tree/4.0.5" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-05-07T05:35:17+00:00" + }, + { + "name": "sebastian/environment", + "version": "5.1.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", + "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-posix": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "http://www.github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/environment/issues", + "source": "https://github.com/sebastianbergmann/environment/tree/5.1.5" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T06:03:51+00:00" + }, + { + "name": "sebastian/exporter", + "version": "4.0.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d", + "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "ext-mbstring": "*", + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "https://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/exporter/issues", + "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.5" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2022-09-14T06:03:37+00:00" + }, + { + "name": "sebastian/global-state", + "version": "5.0.6", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "bde739e7565280bda77be70044ac1047bc007e34" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bde739e7565280bda77be70044ac1047bc007e34", + "reference": "bde739e7565280bda77be70044ac1047bc007e34", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "ext-dom": "*", + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-uopz": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Snapshotting of global state", + "homepage": "http://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/global-state/issues", + "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.6" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-08-02T09:26:13+00:00" + }, + { + "name": "sebastian/lines-of-code", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/lines-of-code.git", + "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.6", + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for counting the lines of code in PHP source code", + "homepage": "https://github.com/sebastianbergmann/lines-of-code", + "support": { + "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-11-28T06:42:11+00:00" + }, + { + "name": "sebastian/object-enumerator", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:12:34+00:00" + }, + { + "name": "sebastian/object-reflector", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-reflector/issues", + "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:14:26+00:00" + }, + { + "name": "sebastian/recursion-context", + "version": "4.0.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", + "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "https://github.com/sebastianbergmann/recursion-context", + "support": { + "issues": "https://github.com/sebastianbergmann/recursion-context/issues", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.5" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T06:07:39+00:00" + }, + { + "name": "sebastian/resource-operations", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/resource-operations.git", + "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", + "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides a list of PHP built-in functions that operate on resources", + "homepage": "https://www.github.com/sebastianbergmann/resource-operations", + "support": { + "issues": "https://github.com/sebastianbergmann/resource-operations/issues", + "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:45:17+00:00" + }, + { + "name": "sebastian/type", + "version": "3.2.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", + "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.2-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the types of the PHP type system", + "homepage": "https://github.com/sebastianbergmann/type", + "support": { + "issues": "https://github.com/sebastianbergmann/type/issues", + "source": "https://github.com/sebastianbergmann/type/tree/3.2.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T06:13:03+00:00" + }, + { + "name": "sebastian/version", + "version": "3.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "c6c1022351a901512170118436c764e473f6de8c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", + "reference": "c6c1022351a901512170118436c764e473f6de8c", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "support": { + "issues": "https://github.com/sebastianbergmann/version/issues", + "source": "https://github.com/sebastianbergmann/version/tree/3.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:39:44+00:00" + }, + { + "name": "theseer/tokenizer", + "version": "1.2.2", + "source": { + "type": "git", + "url": "https://github.com/theseer/tokenizer.git", + "reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/b2ad5003ca10d4ee50a12da31de12a5774ba6b96", + "reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + } + ], + "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", + "support": { + "issues": "https://github.com/theseer/tokenizer/issues", + "source": "https://github.com/theseer/tokenizer/tree/1.2.2" + }, + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2023-11-20T00:12:19+00:00" + }, + { + "name": "webmozart/assert", + "version": "1.11.0", + "source": { + "type": "git", + "url": "https://github.com/webmozarts/assert.git", + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991", + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "php": "^7.2 || ^8.0" + }, + "conflict": { + "phpstan/phpstan": "<0.12.20", + "vimeo/psalm": "<4.6.1 || 4.6.2" + }, + "require-dev": { + "phpunit/phpunit": "^8.5.13" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.10-dev" + } + }, + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ], + "support": { + "issues": "https://github.com/webmozarts/assert/issues", + "source": "https://github.com/webmozarts/assert/tree/1.11.0" + }, + "time": "2022-06-03T18:03:27+00:00" + } + ], + "packages-dev": [], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": true, + "prefer-lowest": false, + "platform": { + "php": ">=7.3", + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "ext-xmlwriter": "*" + }, + "platform-dev": [], + "platform-overrides": { + "php": "7.3.0" + }, + "plugin-api-version": "2.6.0" +} +apply($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 +4996,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 +5795,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 +6654,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 +8716,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 +8724,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 +10220,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 +13506,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 +14526,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 +17608,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 +17896,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 +18348,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 +18376,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 +18391,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 +18542,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 +19037,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 +19214,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 +19570,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 +19593,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 +19620,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 +19655,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 +19688,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 +19944,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 +20013,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 +20043,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 +20455,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 +20801,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 +21506,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 +22178,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 +22237,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 +22249,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 +22382,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 +22596,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 +22612,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 +22681,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 +23526,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 +23589,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 +23597,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 +23720,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 +23751,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 +23773,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 +23897,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 +26587,10 @@ final class CodeCoverage * @var ?string */ private $cacheDirectory; + /** + * @var ?Directory + */ + private $cachedReport; public function __construct(Driver $driver, Filter $filter) { $this->driver = $driver; @@ -24405,7 +26603,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 +26616,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 +26679,7 @@ final class CodeCoverage } $this->currentId = $id; $this->driver->start(); + $this->cachedReport = null; } /** * Stop collection of code coverage information. @@ -24484,6 +26694,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 +26715,7 @@ final class CodeCoverage if ($id === null) { throw new TestIdMissingException(); } + $this->cachedReport = null; $this->applyFilter($rawData); $this->applyExecutableLinesFilter($rawData); if ($this->useAnnotationsForIgnoringCode) { @@ -24550,6 +26762,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 +26901,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 +27002,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 +27014,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 +28111,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 +29757,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 +29885,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 +30046,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 +30076,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 +30199,7 @@ final class Cobertura $methodsElement->appendChild($methodElement); } } - if ($report->numberOfFunctions() === 0) { + if ($item->numberOfFunctions() === 0) { $packageElement->setAttribute('complexity', (string) $packageComplexity); continue; } @@ -27972,7 +30215,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 +30268,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 +30297,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 +30381,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 +31050,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 +31646,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 +31774,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 +31941,9 @@ table + .structure-heading {

- - - + + + - - + + + - - - + + + + @@ -30313,9 +32589,9 @@ $(document).ready(function() { Code Coverage for {{full_path}} - - - + + + @@ -30368,10 +32644,10 @@ $(document).ready(function() { - - - - + + + + @@ -30555,7 +32831,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 +32839,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 +34031,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 +34134,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 +34181,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 +34298,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 +34363,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 +34885,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 +34901,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 +35041,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 +42563,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 +42592,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 +42692,7 @@ class Argument * given precision. * * @param float $value - * @param float $precision + * @param int $precision * * @return Token\ApproximateValueToken */ @@ -40418,7 +42703,7 @@ class Argument /** * Checks that argument is in array. * - * @param array $value + * @param array $value * * @return Token\InArrayToken */ @@ -40429,7 +42714,7 @@ class Argument /** * Checks that argument is not in array. * - * @param array $value + * @param array $value * * @return Token\NotInArrayToken */ @@ -40458,14 +42743,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 +42767,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 +42808,7 @@ class ArgumentsWildcard return $this->string; } /** - * @return array + * @return list */ public function getTokens() { @@ -40549,7 +42837,7 @@ class AnyValueToken implements \Prophecy\Argument\Token\TokenInterface /** * Always scores 3 for any argument. * - * @param $argument + * @param mixed $argument * * @return int */ @@ -40646,6 +42934,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 +42948,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 +43000,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 +43029,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 +43041,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 +43070,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 +43087,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 +43105,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 +43150,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 +43160,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 +43171,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 +43270,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 +43317,9 @@ class CallbackToken implements \Prophecy\Argument\Token\TokenInterface */ public function __toString() { + if ($this->customStringRepresentation !== null) { + return $this->customStringRepresentation; + } return 'callback()'; } } @@ -41025,8 +43335,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 +43347,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 +43449,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 +43467,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 +43519,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 +43583,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 +43602,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 +43659,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 +43671,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 +43682,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 +43729,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 +43786,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 +43804,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 +43823,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 +43941,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 +44050,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 +44096,7 @@ class Call /** * Returns called method arguments. * - * @return array + * @return array */ public function getArguments() { @@ -41797,7 +44123,7 @@ class Call /** * Returns callee filename. * - * @return string + * @return string|null */ public function getFile() { @@ -41806,7 +44132,7 @@ class Call /** * Returns callee line number. * - * @return int + * @return int|null */ public function getLine() { @@ -41866,6 +44192,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 +44211,7 @@ class CallCenter */ private $recordedCalls = array(); /** - * @var SplObjectStorage + * @var SplObjectStorage> */ private $unexpectedCalls; /** @@ -41900,9 +44227,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 +44241,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 +44290,7 @@ class CallCenter * @param string $methodName * @param ArgumentsWildcard $wildcard * - * @return Call[] + * @return list */ public function findCalls($methodName, ArgumentsWildcard $wildcard) { @@ -41973,11 +44300,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 +44313,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 +44332,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 +44345,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 +44389,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 +44421,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 +44459,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 +44507,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 +44537,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 +44550,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 +44570,9 @@ class CachedDoubler extends \Prophecy\Doubler\Doubler \sort($parts); return \md5(\implode('', $parts)); } + /** + * @return void + */ public function resetCache() { self::$classes = array(); @@ -42282,6 +44670,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 +44747,7 @@ class KeywordPatch implements \Prophecy\Doubler\ClassPatch\ClassPatchInterface /** * Returns array of php keywords. * - * @return array + * @return list */ private function getKeywords() { @@ -42526,6 +44915,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 +44981,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 +45028,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 +45039,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 +45148,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 +45314,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 +45330,7 @@ class Doubler /** * Returns list of registered class patches. * - * @return ClassPatchInterface[] + * @return list */ public function getClassPatches() { @@ -42957,6 +45340,8 @@ class Doubler * Registers new class patch. * * @param ClassPatchInterface $patch + * + * @return void */ public function registerClassPatch(ClassPatchInterface $patch) { @@ -42968,9 +45353,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 +45384,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 +45424,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 +45454,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 +45472,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 +45513,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 +45571,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 +45602,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 +45621,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 +45631,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 +45654,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 +45691,7 @@ class ClassMirror } $methodNode->addArgument($node); } - private function hasDefaultValue(ReflectionParameter $parameter) + private function hasDefaultValue(ReflectionParameter $parameter) : bool { if ($parameter->isVariadic()) { return \false; @@ -43302,6 +45701,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 +45711,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 +45740,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 +45773,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 +45799,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 +45817,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 +45892,8 @@ class ArgumentNode /** * @deprecated use setArgumentTypeNode instead * @param string|null $typeHint + * + * @return void */ public function setTypeHint($typeHint = null) { @@ -43450,6 +45910,8 @@ class ArgumentNode /** * @deprecated use getArgumentTypeNode instead * @param bool $isNullable + * + * @return void */ public function setAsNullable($isNullable = \true) { @@ -43486,28 +45948,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 +45999,8 @@ class ClassNode } /** * @param string $interface + * + * @return void */ public function addInterface($interface) { @@ -43532,25 +46018,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 +46066,11 @@ class ClassNode $this->methods[$method->getName()] = $method; } } + /** + * @param string $name + * + * @return void + */ public function removeMethod($name) { unset($this->methods[$name]); @@ -43584,7 +46094,7 @@ class ClassNode return isset($this->methods[$name]); } /** - * @return string[] + * @return list */ public function getUnextendableMethods() { @@ -43592,6 +46102,8 @@ class ClassNode } /** * @param string $unextendableMethod + * + * @return void */ public function addUnextendableMethod($unextendableMethod) { @@ -43602,6 +46114,7 @@ class ClassNode } /** * @param string $method + * * @return bool */ public function isExtendable($method) @@ -43617,6 +46130,8 @@ class ClassNode } /** * @param bool $readOnly + * + * @return void */ public function setReadOnly($readOnly) { @@ -43635,7 +46150,6 @@ class ClassNode */ namespace Prophecy\Doubler\Generator\Node; -use Prophecy\Doubler\Generator\TypeHintReference; use Prophecy\Exception\InvalidArgumentException; /** * Method node. @@ -43646,66 +46160,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 +46279,8 @@ class MethodNode /** * @deprecated use setReturnTypeNode instead * @param string $type + * + * @return void */ public function setReturnType($type = null) { @@ -43734,6 +46289,8 @@ class MethodNode /** * @deprecated use setReturnTypeNode instead * @param bool $bool + * + * @return void */ public function setNullableReturnType($bool = \true) { @@ -43768,11 +46325,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 +46342,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 +46390,8 @@ final class ReturnTypeNode extends \Prophecy\Doubler\Generator\Node\TypeNodeAbst } /** * @deprecated use hasReturnStatement + * + * @return bool */ public function isVoid() { @@ -43839,7 +46409,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 +46423,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 +46475,9 @@ abstract class TypeNodeAbstract return $this->prefixWithNsSeparator($type); } } + /** + * @return void + */ protected function guardIsValidType() { if (\PHP_VERSION_ID < 80200) { @@ -43956,6 +46535,11 @@ namespace Prophecy\Doubler\Generator; */ final class TypeHintReference { + /** + * @param string $type + * + * @return bool + */ public function isBuiltInParamTypeHint($type) { switch ($type) { @@ -43975,6 +46559,11 @@ final class TypeHintReference return \false; } } + /** + * @param string $type + * + * @return bool + */ public function isBuiltInReturnTypeHint($type) { if ($type === 'void') { @@ -44008,15 +46597,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 +46620,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 +46643,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 +46666,9 @@ class LazyDouble /** * Sets constructor arguments. * - * @param array $arguments + * @param array|null $arguments + * + * @return void */ public function setArguments(array $arguments = null) { @@ -44109,12 +46711,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 +46757,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 +46800,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 +46833,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 +46874,9 @@ class ClassNotFoundException extends \Prophecy\Exception\Doubler\DoubleException parent::__construct($message); $this->classname = $classname; } + /** + * @return string + */ public function getClassname() { return $this->classname; @@ -44294,6 +46928,9 @@ namespace Prophecy\Exception\Doubler; class InterfaceNotFoundException extends \Prophecy\Exception\Doubler\ClassNotFoundException { + /** + * @return string + */ public function getInterfaceName() { return $this->getClassname(); @@ -44345,6 +46982,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 +46994,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 +47010,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 +47059,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 +47125,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 +47145,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 +47234,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 +47270,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 +47310,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 +47342,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 +47387,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 +47395,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 +47405,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 +47455,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 +47483,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 +47492,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 +47518,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 +47561,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 +47570,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 +47612,7 @@ use Prophecy\Exception\InvalidArgumentException; use Closure; use ReflectionFunction; /** - * Callback prediction. + * Executes preset callback. * * @author Konstantin Kudryashov */ @@ -44995,8 +47620,6 @@ class CallbackPrediction implements \Prophecy\Prediction\PredictionInterface { private $callback; /** - * Initializes callback prediction. - * * @param callable $callback Custom callback * * @throws \Prophecy\Exception\InvalidArgumentException @@ -45008,18 +47631,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 +47658,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 +47691,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 +47706,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 +47732,7 @@ use Prophecy\Exception\InvalidArgumentException; use Closure; use ReflectionFunction; /** - * Callback promise. + * Evaluates promise callback. * * @author Konstantin Kudryashov */ @@ -45150,20 +47753,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 +47787,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 +47811,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 +47835,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 +47855,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 +47865,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 +47898,7 @@ use Prophecy\Prophecy\MethodProphecy; use Prophecy\Exception\InvalidArgumentException; use ReflectionClass; /** - * Throw promise. + * Throws predefined exception. * * @author Konstantin Kudryashov */ @@ -45330,15 +47906,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 +47929,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 +47968,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 +47976,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 +47986,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 +48031,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 +48043,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 +48105,7 @@ class MethodProphecy /** * Sets argument wildcard. * - * @param array|Argument\ArgumentsWildcard $arguments + * @param array|Argument\ArgumentsWildcard $arguments * * @return $this * @@ -45571,7 +48158,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 +48200,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 +48258,7 @@ class MethodProphecy * * @see \Prophecy\Prediction\CallTimesPrediction * - * @param $count + * @param int $count * * @return $this */ @@ -45696,6 +48285,7 @@ class MethodProphecy * @return $this * * @throws \Prophecy\Exception\InvalidArgumentException + * @throws PredictionException */ public function shouldHave($prediction) { @@ -45724,6 +48314,8 @@ class MethodProphecy * @see \Prophecy\Prediction\CallPrediction * * @return $this + * + * @throws PredictionException */ public function shouldHaveBeenCalled() { @@ -45735,6 +48327,8 @@ class MethodProphecy * @see \Prophecy\Prediction\NoCallsPrediction * * @return $this + * + * @throws PredictionException */ public function shouldNotHaveBeenCalled() { @@ -45778,6 +48372,10 @@ class MethodProphecy } /** * Checks currently registered [with should(...)] prediction. + * + * @return void + * + * @throws PredictionException */ public function checkPrediction() { @@ -45807,7 +48405,7 @@ class MethodProphecy /** * Returns predictions that were checked on this object. * - * @return Prediction\PredictionInterface[] + * @return list */ public function getCheckedPredictions() { @@ -45816,7 +48414,7 @@ class MethodProphecy /** * Returns object prophecy this method prophecy is tied to. * - * @return ObjectProphecy + * @return ObjectProphecy */ public function getObjectProphecy() { @@ -45847,6 +48445,9 @@ class MethodProphecy { return $this->voidReturnType; } + /** + * @return void + */ private function bindToObjectProphecy() { if ($this->bound) { @@ -45868,8 +48469,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 +48481,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 +48493,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 +48509,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 +48525,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 +48538,7 @@ class ObjectProphecy implements \Prophecy\Prophecy\ProphecyInterface /** * Sets constructor arguments. * - * @param array $arguments + * @param array $arguments * * @return $this */ @@ -45950,11 +48553,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 +48570,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 +48585,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 +48604,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 +48621,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 +48630,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 +48657,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 +48693,8 @@ class ObjectProphecy implements \Prophecy\Prophecy\ProphecyInterface * * @param string $name * @param mixed $value + * + * @return void */ public function __set($name, $value) { @@ -46108,6 +48717,8 @@ namespace Prophecy\Prophecy; * Core Prophecy interface. * * @author Konstantin Kudryashov + * + * @template-covariant T of object */ interface ProphecyInterface { @@ -46115,6 +48726,8 @@ interface ProphecyInterface * Reveals prophecy object (double) . * * @return object + * + * @phpstan-return T */ public function reveal(); } @@ -46140,13 +48753,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 +48863,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 +48896,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 +48915,7 @@ class Prophet /** * Returns all created object prophecies. * - * @return ObjectProphecy[] + * @return list> */ public function getProphecies() { @@ -46318,6 +48933,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 +48998,7 @@ class ExportUtil * and public properties. * * @param mixed $value - * @return array + * @return array */ public static function toArray($value) { @@ -46438,7 +49055,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 +49155,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 +49168,7 @@ class StringUtil if (null === $value) { return 'null'; } + \assert(\is_int($value) || \is_float($value)); return (string) $value; } /** @@ -46572,7 +49190,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 +49245,7 @@ class StringUtil - + @@ -46959,6 +49577,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 +49613,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 +49758,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 +49777,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 +49891,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 +49906,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 +50513,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 +50533,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 +50553,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 +50573,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 +50595,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 +50617,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 +50631,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 +51073,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 +51100,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 +51640,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 +53176,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 +55190,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 +55406,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 +55684,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 +57743,6 @@ declare (strict_types=1); */ namespace PHPUnit\Framework\Constraint; -use function strlen; use function strpos; use PHPUnit\Framework\InvalidArgumentException; /** @@ -54962,7 +57756,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 +58495,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 +59590,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 +59949,8 @@ final class InvocationMocker implements \PHPUnit\Framework\MockObject\Builder\In * @throws MethodParametersAlreadyConfiguredException * * @return $this + * + * @deprecated */ public function withConsecutive(...$arguments) : self { @@ -60501,6 +63297,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 +64438,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 +64694,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 +64770,7 @@ abstract class TestCase extends \PHPUnit\Framework\Assert implements \PHPUnit\Fr */ protected $backupGlobalsBlacklist = []; /** - * @var bool + * @var ?bool */ protected $backupStaticAttributes; /** @@ -61984,7 +64784,7 @@ abstract class TestCase extends \PHPUnit\Framework\Assert implements \PHPUnit\Fr */ protected $backupStaticAttributesBlacklist = []; /** - * @var bool + * @var ?bool */ protected $runTestInSeparateProcess; /** @@ -61996,7 +64796,7 @@ abstract class TestCase extends \PHPUnit\Framework\Assert implements \PHPUnit\Fr */ protected $providedTests = []; /** - * @var bool + * @var ?bool */ private $runClassInSeparateProcess; /** @@ -62341,16 +65141,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 +65186,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 +65355,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 +65395,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 +66118,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 +66436,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 +67481,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 +68197,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 +68316,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 +68638,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 +69043,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 +69073,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 +69097,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 +70588,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 +70602,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 +70611,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 +70622,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.15', dirname(__DIR__, 2)))->getVersion(); } return self::$version; } @@ -71126,7 +73998,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 +74086,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 +74100,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 +74973,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 +75365,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 +75420,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 +75429,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 +75484,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 +75690,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 +78474,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 +78965,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 +78984,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 +79024,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 +79041,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 +81640,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 +82101,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 +82125,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 +82146,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 +82192,6 @@ final class ExcludeList Version::class => 1, // theseer/tokenizer Tokenizer::class => 1, - // webmozart/assert - Assert::class => 1, ]; /** * @var string[] @@ -79360,7 +82223,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 +82423,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 +82474,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 +82504,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 +82526,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 +82555,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 +82617,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 +83921,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 +83931,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 +83942,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 +84057,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 +84068,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 +84606,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 +85186,47 @@ final class HtmlResultPrinter extends \PHPUnit\Util\TestDox\ResultPrinter @@ -82324,7 +85237,7 @@ EOT; */ private const CLASS_HEADER = <<<'EOT' -

%s

+

%s

    EOT; @@ -82357,14 +85270,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 +86988,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 +87243,55 @@ final class XmlTestListRenderer } } - + phpunit phpunit - 9.5.27 + 9.6.15 The PHP Unit Testing framework. BSD-3-Clause - pkg:composer/phpunit/phpunit@9.5.27 + pkg:composer/phpunit/phpunit@9.6.15 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 +87356,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 +87488,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 +87524,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 +87572,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 +87596,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 @@ -84707,14 +87620,14 @@ final class XmlTestListRenderer theseer tokenizer - 1.2.1 + 1.2.2 A small library for converting tokenized PHP source code into XML and potentially other formats BSD-3-Clause - pkg:composer/theseer/tokenizer@1.2.1 + pkg:composer/theseer/tokenizer@1.2.2 webmozart @@ -89034,7 +91947,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 +92663,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 +92794,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 +93108,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 +93779,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 +93797,7 @@ class Restorer continue; } $attribute->setAccessible(\true); - $attribute->setValue($defaults[$name]); + $attribute->setValue(null, $defaults[$name]); } } } @@ -91783,7 +94713,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 +94724,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 +94824,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 +94879,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 +94896,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 +94910,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 +94994,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 +95416,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 +95440,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 +95564,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 +95648,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; } } } @@ -93828,6 +96770,7 @@ class TokenCollectionException extends Exception declare (strict_types=1); namespace PHPUnit\TheSeer\Tokenizer; +use function var_dump; class Tokenizer { /** @@ -93853,6 +96796,10 @@ class Tokenizer } $line = $tok[2]; $values = \preg_split('/\\R+/Uu', $tok[1]); + if (!$values) { + $result->addToken(new Token($line, \token_name($tok[0]), '{binary data}')); + continue; + } foreach ($values as $v) { $token = new Token($line, \token_name($tok[0]), $v); $lastToken = $token; @@ -93870,11 +96817,6 @@ class Tokenizer $prev = new Token(0, 'Placeholder', ''); $final = new TokenCollection(); foreach ($tokens as $token) { - if ($prev === null) { - $final->addToken($token); - $prev = $token; - continue; - } $gap = $token->getLine() - $prev->getLine(); while ($gap > 1) { $linebreak = new Token($prev->getLine() + 1, 'T_WHITESPACE', ''); @@ -100269,4 +103211,4 @@ namespace PHPSTORM_META { map([""=>"$0"]) ); } - Ro:^:o875x>MtU)bY!)_iGBMB \ No newline at end of file +8v¥BWѻǗHU+E8(z=9QR2fAjTh\$Ώ$GBMB \ No newline at end of file diff --git a/tools/psalm b/tools/psalm index d24fac2..5df97c1 100755 Binary files a/tools/psalm and b/tools/psalm differ